1.过滤
where:where方法用于根据条件对数据进行过滤使用方法如下
IEnumerable<User> list1 = list.Where(x => x.Age > 18 && x.Address =="江苏");
2.获取一条数据
Single :如果确认有且只有一条满足要求,那么就用single方法。如果没有满足条件,或者满足条件的数据多余一条single方法就会抛出异常。
SingleOrDefault:如果确认最多只有一条数据满足要求,可以使用SingleOrDefault方法。如果满足条件多于一条SingleOrDefault方法就会抛出异常,如果没有满足条件SingleOrDefault方法会返回类型的默认值。
First:如果满足条件的数据有一条或者多条,First方法就会返回第一条数据,如果没有满足条件的数据First方法就会抛出异常。
FirstOrDefault:如果满足条件的数据有一条或者多条,FirstOrDefault方法会返回第一条数据,如果没有满足条件的数据,FirstOrDefault方法就会返回类型的默认值。
User u1 = list.Single(x => x.Age == 18);
User u2 = list.SingleOrDefault(x => x.Age == 18);
User u3 = list.First(x => x.Age == 18);
User u4 = list.FirstOrDefault(x => x.Age == 18);
这4组方法的返回值都是符合条件的一条数据,每组方法都有两个重载方法一个有参数,另外一个有Fun<TSouree,bool> predicate
3.判断是否有一条满足条件的数据
Any:方法用于根据条件对数据进行过滤,返回值为bool类型
bool b1 = list.Any(x => x.Age == 18 );
bool b2= list.Where(x => x.Age == 18 ).Any();
Any只关心有没有符合条件的数据,不会关心符号条件的数据有几条,因此只要遇到一个满足条件的数据就会停止向后继续检索。
4.聚合函数
Max:最大值
Min:最小值
Average:平均值
Sum:总和
Count:总数
long max = list.Max(x => x.Age);
long min = list.Min(x => x.Age);
double age = list.Average(x => x.Age);
long sum = list.Sum(x => x.Age);
int count = list.Count();
这些聚合函数也可以和Where,Skip,Take等方法一起组合使用
5.限制结果集
Skip(n):用于跳过跳过第n条数据
Take(n):用于获取n条数据
var userlist = list.Skip(1).Take(3);
假设我list中有5条数据,skip(1)跳过了第一条take(3)取到后面的三条数据结果就是userlist中就是2,3,4。限制结果集的方法主要主要的应用场景的分页查询。
6.排序
OrderBy:用于对数据进行正序排列
OrderByDescending:用于对数据进行逆向排序
var userlist = list.OrderBy(x => x.Id);
var userlist = list.OrderByDescending(x => x.Id);
7.分组
GroupBy:GroupBy可以用来分组,类似于SQL中的GroupBy下面演示根据年龄进行分组,计算组内人数
var userinfo = list.GroupBy(x => x.Age);
8.投影
Select:可以对集合进行投影操作,通俗点说就是把集合中的每一项逐项转换为另外一种类型。
IEnumerable<string> userinfo = list.Select(x=>x.Gender==1?"男":"女");
根据上方代码用于Select把list中的Gender提取出来转换为String类型的男女
8.集合的转换
ToArray: 把IEnumerable<T>类型转换为数组类型
ToList:把IEnumerable<T>类型转换为List<T>类型
User[] userinfo = list.Where(x => x.Age > 18).ToArray();
List<User> userinfo2 = list.Where(x => x.Age > 18).ToList();