更多访问:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/statements-expressions-operators/lambda-expressions
查询:
Select() 、SelectMany()
查询要注意 IEnumerable<T>和IQueryable<T>
List<Student> _students = new List<Student>()
{
new Student {S_="01", Sname= "赵雷", Sage= DateTime.Parse("1990-01-01"), Ssex= "男"},
new Student{S_= "02", Sname= "钱电", Sage= DateTime.Parse("1990-12-21"), Ssex= "男"},
new Student{S_= "03", Sname= "孙风", Sage= DateTime.Parse("1990-05-20"), Ssex= "男"},
new Student{S_= "04", Sname= "李云", Sage= DateTime.Parse("1990-08-06"), Ssex= "男"},
new Student{S_= "05", Sname= "周梅", Sage= DateTime.Parse("1991-12-01"), Ssex= "女"},
new Student{S_= "06", Sname= "吴兰", Sage= DateTime.Parse("1992-03-01"), Ssex= "女"},
new Student{S_= "07", Sname= "郑竹", Sage= DateTime.Parse("1989-07-01"), Ssex= "女"},
new Student{S_= "08", Sname= "王菊", Sage= DateTime.Parse("1990-01-20"), Ssex= "女"}
};
Select() 为每个源值生成一个结果值。 因此,总体结果是一个与源集合具有相同元素数目的集合。 与之相反,SelectMany() 将生成单一总体结果,其中包含来自每个源值的串联子集合。
_students.Select(m => m.Sname);//获取当前_students 中所有Sname
var i=_students.SelectMany(m => m.Sname);
// _students.Select(m => m.Sname).First();//返回一个序列的第一个元素。
//_students.Select(m => m.Sname).FirstOrDefault();//返回序列中的第一个元素;如果序列中不包含任何元素,则返回默认值。
//_students.Where(m => m.Sname == "");//条件查询
_students.Skip(2);//跳过指定的数量的序列中的元素,然后返回剩余元素。
_students.Take(5);//从序列的开头返回指定的数量的连续元素。 相当于 Sql 中Top
int PageSize=5 , PageIndex =2;
_students.Take(PageSize * PageIndex).Skip(PageSize * (PageIndex - 1));//实现分页 PageSize和PageIndex 从客户端传入
Contains()方法使用:
string[] str = { "孙风", "赵雷" };
var y = _students.Where(m => str.ToList().Select(n => n).Contains(m.Sname));//2条数据
y = _students.Where(m => m.Sname.Contains("赵雷"));//模糊查询
List<string> StrList = new List<string>() { "孙风", "赵雷" };
var x = _students.Where(m => StrList.Select(n => n).Contains(m.Sname));//2条数据
return _students;