• LINQ 学习路程 -- 查询例子


    IList<Student> studentList = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 18, StandardID = 1 } ,
        new Student() { StudentID = 2, StudentName = "Steve",  Age = 21, StandardID = 1 } ,
        new Student() { StudentID = 3, StudentName = "Bill",  Age = 18, StandardID = 2 } ,
        new Student() { StudentID = 4, StudentName = "Ram" , Age = 20, StandardID = 2 } ,
        new Student() { StudentID = 5, StudentName = "Ron" , Age = 21 } 
    };
    
    IList<Standard> standardList = new List<Standard>() { 
        new Standard(){ StandardID = 1, StandardName="Standard 1"},
        new Standard(){ StandardID = 2, StandardName="Standard 2"},
        new Standard(){ StandardID = 3, StandardName="Standard 3"}
    };

    1.多个select和where操作

    var studentNames = studentList.Where(s => s.Age > 18)
                                  .Select(s => s)
                                  .Where(st => st.StandardID > 0)
                                  .Select(s => s.StudentName);
    var teenStudentsName = from s in studentList
                           where s.age > 12 && s.age < 20
                           select new { StudentName = s.StudentName };
    
    teenStudentsName.ToList().ForEach(s => Console.WriteLine(s.StudentName));

    2.Group by

    var studentsGroupByStandard = from s in studentList
                                  group s by s.StandardID into sg
                                  orderby sg.Key 
                                        select new { sg.Key, sg };
    
    
    foreach (var group in studentsGroupByStandard)
    {
        Console.WriteLine("StandardID {0}:", group.Key);
        
        group.sg.ToList().ForEach(st => Console.WriteLine(st.StudentName ));
    }

    left outer join

    var studentsGroup = from stad in standardList
                        join s in studentList
                        on stad.StandardID equals s.StandardID
                            into sg
                            select new { 
                                            StandardName = stad.StandardName, 
                                            Students = sg 
                                        };
    
    foreach (var group in studentsGroup)
    {
        Console.WriteLine(group.StandardName);
        
        group.Students.ToList().ForEach(st => Console.WriteLine(st.StudentName));
    }
    var studentsWithStandard = from stad in standardList
                               join s in studentList
                               on stad.StandardID equals s.StandardID
                               into sg
                                   from std_grp in sg 
                                   orderby stad.StandardName, std_grp.StudentName 
                                   select new { 
                                                    StudentName = std_grp.StudentName, 
                                                    StandardName = stad.StandardName 
                                    };
    
    
    foreach (var group in studentsWithStandard)
    {
        Console.WriteLine("{0} is in {1}", group.StudentName, group.StandardName);
    }

    Sorting

    var sortedStudents = from s in studentList
                            orderby s.StandardID, s.age
                            select new { 
                                    StudentName = s.StudentName, 
                                    Age = s.age, 
                                    StandardID = s.StandardID };
    
    sortedStudents.ToList().ForEach(s => Console.WriteLine("Student Name: {0}, Age: {1}, StandardID: {2}", s.StudentName, s.Age , s.StandardID));

    inner join

    var studentWithStandard = from s in studentList
                              join stad in standardList
                              on s.StandardID equals stad.StandardID 
                              select new { 
                                      StudentName = s.StudentName, 
                                      StandardName = stad.StandardName 
                                  };
    var nestedQueries = from s in studentList
                        where s.age > 18 && s.StandardID == 
                            (from std in standardList
                            where std.StandardName == "Standard 1"
                            select std.StandardID).FirstOrDefault()
                                select s;
    
    nestedQueries.ToList().ForEach(s => Console.WriteLine(s.StudentName));
  • 相关阅读:
    SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法
    转:SqlServer2012自增列值突然增大1000的原因及解决方法
    sql server 自增列,值突然增大1000的情况
    C# 复制数组容易踩到的坑--引用类型与值类型
    sql中的表值函数与标量值函数区别与用法
    Swift4.0复习循环
    获取视频第一帧图片
    UITableView实现行纵向颜色渐变
    iOS点击按钮第二次不能旋转View
    iOS扩大按钮的点击范围
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/6616862.html
Copyright © 2020-2023  润新知