简介:
查询中执行的一些典型类型的操作。
使用
1.let
在查询表达式中,存储子表达式的结果有时很有用,这样可以在随后的子句中使用。 可以使用 let 关键字完成这一工作,该关键字可以创建一个新的范围变量,并且用您提供的表达式的结果初始化该变量。 一旦用值初始化了该范围变量,它就不能用于存储其他值。 但如果该范围变量存储的是可查询的类型,则可以对其进行查询。
创建一个可以查询自身的可枚举类型。
使查询只能对范围变量 word 调用一次 ToLower。 如果不使用 let,则必须在 where 子句的每个语句中调用 ToLower。
class LetSample1
{
static void Main()
{
string[] strings =
{
"A penny saved is a penny earned.",
"The early bird catches the worm.",
"The pen is mightier than the sword."
};
// 把这个句子分成一组单词,选择第一个字母,让其变成小写
var earlyBirdQuery =
from sentence in strings
let words = sentence.Split(' ') //通过let获取变量words
from word in words
let w = word.ToLower()
where w[0] == 'a' || w[0] == 'e'
|| w[0] == 'i' || w[0] == 'o'
|| w[0] == 'u'
select word;
// 执行查询
foreach (var v in earlyBirdQuery)
{
Console.WriteLine("\"{0}\" starts with a vowel", v);
}
/*输出:
"A" starts with a vowel
"is" starts with a vowel
"a" starts with a vowel
"earned." starts with a vowel
"early" starts with a vowel
"is" starts with a vowel
*/
Console.ReadKey();
}
}
2.orderby
对数据进行排序。 orderby 子句将使返回的序列中的元素按照被排序的类型的默认比较器进行排序。
升序,使用orderby...ascending.
降序,使用 orderby…descending 子句。
int[] numbers = { 2,1,3};
var queryNum =
from n in numbers
orderby n ascending //升序
select n;
List<int> list = queryNum.ToList();