标签:部分 自定义 name 内容 委托 nbsp 查询 UNC list()
自定义学生类
public class Student { public int Id { get; set; } public string Name { get; set; } public int ClassId { get; set; } public int Age { get; set; } }
初始化数据
List<Student> students = new List<Student>() { new Student(){ Id=1, Name="张三", ClassId=101, Age=14 }, new Student(){ Id=2, Name="李四", ClassId=101, Age=15 }, new Student(){ Id=3, Name="王五", ClassId=102, Age=14 }, new Student(){ Id=4, Name="赵六", ClassId=103, Age=13 }, };
现在要查询classId=102的学生信息,以前不知道linq的时候,有人会循环去判断,但现在我们都会用官方的linq方法
//查询班级id为102的学生信息 var stuList = students.Where(a => a.ClassId == 102);
Where里面是lambda表达式,我们经常用,Where方法我们点进去看,就是一个扩展方法,传递一个泛型,定义一个委托,这下就好理解多了。
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
如果不想用官方的Linq方法,也可以用表达式方法。
stuList = (from s in students where s.ClassId == 102 select s).ToList();
这种更像sql,如果不toList的话必须用var 变量 来接受,这也说明,表达式和官方的linq方法是可以混用的,但是一般来说,能用官方的linq方法,就用官方的。
Select投影方法,通常我们是用来转换,把一个类中需要的部分提取出来放到另一个类中,这样输出的内容会更少更精确。
创建一个StudentModel类,用于输出
public class StudentModel { public string Name { get; set; } public int Age { get; set; } }
//只要14岁的学生姓名和年纪 List<StudentModel> sm = students.Select(s => new StudentModel { Name = s.Name, Age = s.Age }).Where(s => s.Age == 14).ToList();
这样新的集合就赋值完成了,用表达式的话就等同于
sm = (from s in students where s.Age == 14 select new StudentModel { Name = s.Name, Age = s.Age }).ToList();
标签:部分 自定义 name 内容 委托 nbsp 查询 UNC list()
原文地址:https://www.cnblogs.com/luyShare/p/14597257.html