码迷,mamicode.com
首页 > 其他好文 > 详细

Linq 2 Linq方法where和select

时间:2021-03-31 12:08:29      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:部分   自定义   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();

 

Linq 2 Linq方法where和select

标签:部分   自定义   name   内容   委托   nbsp   查询   UNC   list()   

原文地址:https://www.cnblogs.com/luyShare/p/14597257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!