zoukankan      html  css  js  c++  java
  • linq学习

    1查询 语法:

      以from item in items 开始,items 为待处理的集合,item 为每一项的变量名; 最后要加上 select ,表示结果的数据;得 记得 select 一定要最后。这是刚用比较别扭的地方。

      1 )var r1 = dogs.Where(d => d.Id > 1);
      2 )var r2 = from d in dogs where d.Id>1 select d;

       lambda和linq编译后使同一个东西,本质上是一样的
    2 排序 

      var items = from d in dogs orderby d.Age,d.MasterId descending select d;

    3 join 

    var r9 = from d in dogs join m in masters on d.MasterId equals m1.Id select new { DogName=d.Name,MasterName=m.Name};
    注意 join 中相等不要用== ,要用 equals 。写 join 的时候 linq 比“lambda ”

    4 group by  

      var r1 = from p in list
            group p by p.Age into g
            select new { Age = g.Key, MaxSalary = g.Max(p=>p.Salary), Count = g.Count() };

     

    5混用

    只有 Where,Select,OrderBy,GroupBy,Join 用 等这些能用 linq 写法,如果要用下面的“ Max,Min,Count,Average,Sum,Any,First,FirstOrDefault,Single,SingleOrDefault,Distinct,Skip,Take 等 ”则还要用 lambda

    var c = (from p in list
          where p.Age>3
          select p
          ).Count();

    6.查询 order by 的一个细节
    EF 调用 Skip 之前必须调用 OrderBy:如下调用 var items = ctx.Persons.Skip(3).Take(5); 会报错“The method 'OrderBy' must be called before the method 'Skip'.)”,
    要改成: var items =ctx.Persons.OrderBy(p=>p.CreateDateTime).Skip(3).Take(5);
    这也是一个好习惯,因为以前就发生过(写原始 sql):分页查询的时候没有指定排序规则,以为默认是按照 Id 排序,其实有的时候不是,就造成数据混乱。写原始 SQL 的时候也要注意一定要指定排序规则

  • 相关阅读:
    团队与领导力健康检查 | 体检表
    如何改变组织文化
    如何在各种文化背景下成功敏捷
    OKR痛点与误区 | 敏捷家分享007
    Scrum培训感想
    如何讲好故事
    Lc70_爬楼梯
    Lc641_设计循环双端队列
    Lc32_最长有效括号
    Lc239_滑动窗口最大值
  • 原文地址:https://www.cnblogs.com/lyfingchow/p/6575987.html
Copyright © 2011-2022 走看看