高级查询方法
聚合类
Count(),Max()/Min(),Average()
排序类
ThenBy()
分区类
Take(),TakeWhile(),Skip(),WkipWhile()
集合类
Distinct()
生成类
Range(),Repeat()
Count方法
返回集合项的数目,集合中的元素数量
Max/Min方法
求集合中的最大值或者最小值
Average方法
求集合中所有数据的平均值
Sum方法
求集合的所有数的总和
int[] nums = { 1, 22, 18, 2, 3, 5, 7, 6, 8, 9, 23, 12 };
var res = (from item in nums
select item).Count();
Console.WriteLine("集合中总共有:"+res);
var res2 = (from item in nums
select item).Max();
Console.WriteLine("集合中最大值:" + res2);
var res3=(from item in nums
select item).Min();
Console.WriteLine("集合中最小值:" + res3);
var res4= (from item in nums
select item).Average();
Console.WriteLine("集合中平均值:" + res4);
var res5 = (from item in nums
select item).Sum();
Console.WriteLine("集合中总和:" + res5);
var res6 = (from item in nums
select item).First();
Console.WriteLine("集合中第一个:" + res6);
ThenBy方法
提供复合排序条件,为排序方法提供更多的排序字段
var list = from item in stulist1
orderby item.StuAge,item.StuName
select item;
foreach (var item in list)
{
Console.WriteLine(item.StuName);
}
var list = stulist1.OrderBy(item => item.StuAge).ThenBy(item => item.StuName);
Take方法
从集合中的开头提取指定数量的元素
Skip方法
跳过指定数量的元素,并获取剩余数量的元素
TakeWhile方法
只要满足指定的条件,就会返回序列的元素,然后跳过剩余的元素
SkipWhile方法
只要满足指定的条件,就会跳过序列中的元素,然后返回剩余的元素
int[] nums = { 1, 22, 2, 18, 3, 5, 7, 6, 8, 9, 23, 12 };
var list = nums.Take(5);
foreach (var item in list)
{
Console.WriteLine(item);
}
Console.WriteLine("--------------");
var list2 = nums.Skip(8);
foreach (var item in list2)
{
Console.WriteLine(item);
}
Console.WriteLine("--------------");
var list3 = nums.TakeWhile(item=>item%3!=0);
foreach (var item in list3)
{
Console.WriteLine(item);
}
Console.WriteLine("--------------");
var list4 = nums.SkipWhile(item => item % 3 != 0);
foreach (var item in list4)
{
Console.WriteLine(item);
}
Distinct方法
去掉集合中的重复元素
int[] list = { 1, 2, 3, 4, 1, 2, 3, 6, 7, 8 };
var res = list.Distinct();
foreach (var item in res)
{
Console.WriteLine(item);
}
Range方法
生成一个整数序列
Repeat方法
生成一个重复项的序列
-
这两个方法不是扩展方法,而是普通的静态方法
-
Range只能产生整数序列
-
Repeat可以产生泛型序列
-
所有的查询方法都存放在System.Linq.Enumerable静态类中
var list1 = Enumerable.Range(1,9);
var list2 = Enumerable.Repeat(new int[] { 1,2,3},5);
foreach (var item in list1)
{
Console.WriteLine(item);
}
Console.WriteLine("------------------------");
foreach (var item in list2)
{
Console.WriteLine(item);
}