LINQ查询方法:
1、Method Syntax查询方法方式:主要利用System.Linq.Enumerable类定义的拓展方法和Lambda表达式方法进行查询。
2、Query Syntax查询语句方式。
查询语句和查询方法的关系:编译器负责在编译时将查询语句便以为查询方法,大部分的查询方法都有对应的查询语句姓氏。一般情况下,我们会使用查询语句+查询方法的混合方式进行查询。
常见的高级查询方法分为:聚合、排序、分区、集合、生成。
Ⅰ聚合类:
<span style="font-size:18px;"> //高级方法---聚合类
//数组数据persons
int[] arr = { 234, 36, 47, 25, 14, 467, 251235, 135, 35 };
//聚合类
Console.WriteLine("arr的最大值" + arr.Max());
Console.WriteLine("arr的最小值"+ arr.Min());
Console.WriteLine("arr的平均值" + arr.Average());
Console.WriteLine("arr的数组元素个数"+ arr.Count());
Console.WriteLine("arr的总和"+ arr.Sum());
</span>
Ⅱ排序类:
<span style="font-size:18px;"> //数组数据persons
int[] arr = { 234, 36, 47, 25, 14, 467, 251235, 135, 35 };
//排序类
var result = arr.OrderBy(p=>p.ToString().Substring(0,1));
result.Print();
</span>
Print方法代码:
<span style="font-size:18px;"> public static void Print(this IEnumerable<int> ie)
{
IEnumerator<int> result = ie.GetEnumerator();
Console.WriteLine("\n------------------------\n");
while(result.MoveNext())
{
Console.WriteLine(result.Current);
}
Console.WriteLine("\n------------------------\n");
}
</span>
用查询语句排序:
<span style="font-size:18px;"> var result = arr.OrderBy(p => p.ToString().Substring(0, 1));</span>
用2次排序:
<span style="font-size:18px;"> var result = arr.OrderBy(p=>p.ToString().Substring(0,1)).ThenBy(p=>p);//2次排序
</span>
Ⅲ分区类
<span style="font-size:18px;"> //分区类(分页的时候用到的会很多)
var result = arr.Skip(3).Take(3);
result.Print();
</span>
代码为:
<span style="font-size:18px;"> var result = arr.SkipWhile(p => p > 4);//方法体部分是该linq语句不再往后执行的条件。
result.Print();
</span>
<span style="font-size:18px;"> var result = arr.SkipWhile(p => p > 4);//方法体部分是该linq语句不再往后执行的条件。当第一次聚到条件成立时立即取出
</span>
查询为空就对了。
<span style="font-size:18px;"> var result = arr.TakeWhile(p => p > 4);//方法体部分是该linq语句提取数据的条件,当第一次遇到条件不成立的情况就停止执行。
result.Print();
</span>
查询结果:
Ⅳ集合类
<span style="font-size:18px;"> //集合类
var result = arr.Distinct();
result.Print();
</span>
Ⅴ生成类--静态方法
<span style="font-size:18px;"> var result = System.Linq.Enumerable.Range(10,50);
result.Print();
</span>
这个运行的结果是从10到59的50个数。