聚合类:Count,Max/Min,Average 排序类:TheyBy 分区类:Take,TakeWhile,Skip,SkipWhile
集合类:Distinct 生成类:Range,Repeat.
Student obj1 = new Student() { StudentId = 1000, StudentName = "张宇" };
Student obj2 = new Student() { StudentId = 1001, StudentName = "王宇" };
Student obj3 = new Student() { StudentId = 1002, StudentName = "周宇" };
Student obj4 = new Student() { StudentId = 1003, StudentName = "李星" };
Student obj5 = new Student() { StudentId = 1004, StudentName = "赵雷" };
Student obj6 = new Student() { StudentId = 1005, StudentName = "张聪" };
List<Student> objList = new List<Student>()
{
obj1,obj2 ,obj3 ,obj4 ,obj5 ,obj6
};
var list = (from stu in objList
where stu.StudentId > 1000
select stu).Count();
var list1 = objList.Where(stu => stu.StudentId > 1000)
.Select(stu => stu)
.Count();
Console.WriteLine(list + "-" +list1 );
Count()表示返回元素个数。
Student obj1 = new Student() { StudentId = 1000, StudentName = "张宇",Age =23 };
Student obj2 = new Student() { StudentId = 1001, StudentName = "王宇",Age =24 };
Student obj3 = new Student() { StudentId = 1002, StudentName = "周宇" ,Age =22};
Student obj4 = new Student() { StudentId = 1003, StudentName = "李星",Age =19 };
Student obj5 = new Student() { StudentId = 1004, StudentName = "赵雷",Age=28 };
Student obj6 = new Student() { StudentId = 1005, StudentName = "张聪",Age =21 };
List<Student> objList = new List<Student>()
{
obj1,obj2 ,obj3 ,obj4 ,obj5 ,obj6
};
var maxAge = (from stu in objList
where stu.StudentId > 1000
select stu.Age).Max();
var minAge = (from stu in objList
where stu.StudentId > 1000
select stu.Age).Min();
var avgAge = (from stu in objList
where stu.StudentId > 1000
select stu.Age).Average();
var sumAge = (from stu in objList
where stu.StudentId > 1000
select stu.Age).Sum();
Console.WriteLine(maxAge+ " "+minAge +" "+avgAge +" "+sumAge );
Max/Min求最大值、最小值,Average 返回集合的平均值,Sum返回集合的总数。
Student obj1 = new Student() { StudentId = 1000, StudentName = "张宇",Age =23 };
Student obj2 = new Student() { StudentId = 1001, StudentName = "王宇",Age =24 };
Student obj3 = new Student() { StudentId = 1002, StudentName = "周宇" ,Age =22};
Student obj4 = new Student() { StudentId = 1003, StudentName = "李星",Age =19 };
Student obj5 = new Student() { StudentId = 1004, StudentName = "赵雷",Age=28 };
Student obj6 = new Student() { StudentId = 1005, StudentName = "张聪",Age =21 };
List<Student> objList = new List<Student>()
{
obj1,obj2 ,obj3 ,obj4 ,obj5 ,obj6
};
var stus1 = from s in objList
orderby s.Age,s.StudentName ,s.StudentId
select s;
var stus2 = objList.OrderBy(s => s.StudentName)
.ThenBy(s => s.Age)
.ThenBy(s => s.StudentId)
.Select(p => p);
foreach (var item in stus2)
{
Console.WriteLine(item.StudentName );
}
ThenBy提供复合排序条件
int[] nums = { 1, 3, 4, 2, 8, 9, 5 };
var list1 = nums.Skip(1).Take(3);
var list2 = nums.SkipWhile(i => i % 3 != 0)
.TakeWhile(i => i % 2 != 0);
foreach (var item in list1)
{
Console.WriteLine(item);
}
foreach (var item in list2)
{
Console.WriteLine(item);
}
Take提供指定数量的项,Skip跳过指定数量的项并获取剩余的项,TakeWhile只要满足指定的条件,就会返回序列的元素,然后跳过剩余的元素,SkipWhile只要满足指定的条件,就跳过序列中的元素,然后返回剩余元素。
int[] nums = { 1, 3, 4, 2, 8, 9, 5,5,5,5,2,2,2 };
var list = nums.Distinct();
var list1 = (from s in nums
select s).Distinct();
foreach (var item in list)
{
Console.WriteLine(item);
}
foreach (var item in list1)
{
Console.WriteLine(item);
}
Distinct去掉集合中的重复项
var num1 = Enumerable.Range(1, 10);
var num2 = Enumerable.Repeat("Linq", 10);
foreach (var item in num1)
{
Console.WriteLine(item);
}
foreach (var item in num2)
{
Console.WriteLine(item);
}
Range生成一个整数序列
Repeat生成一个重复项的序列,注意:Range/Repeat不是扩展方法,而是普通的静态方法,Range只能产生整数序列,Repeat可以产生泛型序列,所有的查询方法都存放在System.Linq.Enumerable静态类中。