zoukankan      html  css  js  c++  java
  • linq用法整理

    linq用法整理

    普通查询

            var highScores = from student in students
                             where student.ExamScores[exam] > score
                             select new {Name = student.FirstName, Score = student.ExamScores[exam]};
    

    Group by

        var queryLastNames =
            from student in students
            group student by student.LastName into newGroup
            orderby newGroup.Key
            select newGroup;
    

    有条件Group by

        var queryGroupByAverages = from student in students
                                   group new { student.FirstName, student.LastName }
                                        by student.ExamScores.Average() > 75 
                                        into studentGroup
                                   select studentGroup;
    
        var queryHighScoreGroups =
            from student in students
            group student by new { FirstLetter = student.LastName[0], Score = student.ExamScores[0] > 85 } 
            into studentGroup
            orderby studentGroup.Key.FirstLetter
            select studentGroup;
    

    嵌套Group

        var queryNestedGroups =
            from student in students
            group student 
            by student.Year 
            into newGroup1
            from newGroup2 in
                (from student in newGroup1
                 group student by student.LastName)
            group newGroup2 by newGroup1.Key;
    

    Inner Joins

    • Simple key join 简单键值join
        var query = from person in people
                    join pet in pets on person equals pet.Owner
                    select new { OwnerName = person.FirstName, PetName = pet.Name };
    
    • Composite key join 多条件join
        IEnumerable<string> query =
                                    from employee in employees
                                    join student in students
                                    on new { employee.FirstName, employee.LastName } equals new { student.FirstName, student.LastName }
                                    select employee.FirstName + " " + employee.LastName;
    
    • Multiple join 多条件join
        var query = from person in people
                    join cat in cats 
                    on person equals cat.Owner
                    join dog in dogs 
                    on new { Owner = person, Letter = cat.Name.Substring(0, 1) } equals new { dog.Owner, Letter = dog.Name.Substring(0, 1) }
                    select new { CatName = cat.Name, DogName = dog.Name };
    
    • Inner join by using grouped join 使用分组连接的内联
        var query1 = 
                     from person in people
                     join pet in pets 
                     on person equals pet.Owner 
                     into gj
                     from subpet 
                     in gj
                     select new { OwnerName = person.FirstName, PetName = subpet.Name };
    
        var query2 = 
                     from person in people
                     join pet in pets 
                     on person equals pet.Owner
                     select new { OwnerName = person.FirstName, PetName = pet.Name };
    

    left outer joins 左外部联接

        var query = 
                    from person in people
                    join pet in pets 
                    on person equals pet.Owner 
                    into gj
                    from subpet in gj.DefaultIfEmpty()
                    select new 
                    { 
                            person.FirstName, 
                            PetName = subpet?.Name ?? String.Empty 
                    };
    

    join 子句的结果进行排序

                 var groupJoinQuery2 =
                     from category in categories
                     join prod in products on category.ID equals prod.CategoryID into prodGroup
                     orderby category.Name
                     select new
                     {
                         Category = category.Name,
                         Products = from prod2 in prodGroup
                                    orderby prod2.Name
                                    select prod2
                     };
    

    Join by using composite keys 多条件 join

    var query = 
        from o in db.Orders
        from p in db.Products
        join d in db.OrderDetails
        on new {o.OrderID, p.ProductID} equals new {d.OrderID, d.ProductID} 
        into details
        from d in details
        select new 
        {
            o.OrderID, 
            p.ProductID, 
            d.UnitPrice
        };
    

    在查询表达式中处理 null 值Handle null values in query expressions

    var query1 =
        from c in categories
        where c != null
        join p in products 
        on c.ID equals p?.CategoryID
        select new { Category = c.Name, Name = p.Name };
    
    
    void TestMethod(Northwind db)
    {
        var query =
            from o in db.Orders
            join e in db.Employees
                on o.EmployeeID equals (int?)e.EmployeeID
            select new { o.OrderID, e.FirstName };
    }
    
  • 相关阅读:
    锁屏设计文档
    用 jquery 解决 浏览器 兼容问题
    mysql 查询语句
    技术相关
    android Rom 制作2
    android Rom 制作
    UI设计
    jquery 表单验证
    cent os数据库安装
    mysql jdbc 驱动 下载地址官网
  • 原文地址:https://www.cnblogs.com/WNpursue/p/10736468.html
Copyright © 2011-2022 走看看