1.Linq相关

    技术2022-05-20  44

    匿名类型: var data = new { name="小胡", age=27 }

          编译器根据表达式自动推断数据类型,节省脑力

     

    自动属性: public string Name { get; set; }

          编译器自动生成字段,节省体力

     

    Lambda表达式: (参数列表) => 函数体

          其实就是 匿名方法,简单且无需复用的方法就用它

     

    Linq查询: (from 别名 in 集合 where (别名.集合元素 满足条件) Orderby 别名.集合元素 select 别名.集合元素).Skip(10).Take(10);          或:  集合.Where(Lambda表达式).Select(Lambda表达式)

          where 是横向查询(过滤行), select 是纵向查询(过滤列)

          Orderby是排序, Skip(m)是跳过m条记录, Take(n)是取n条记录

         

    相关查询语法:

          group 别名 by 别名.集合元素 into 分组后的新集合: 分组其实就是归类,将记录分类压缩

          查询结果.Distinct(): 重复的记录取一条

          (集合A).Union(集合B): 取两个集合的并集

          (集合A).Concat(集合B): 将两个集合合并

          (集合A).Intersect(集合B): 取两个集合的交集     

          (集合A).Except(集合B): 集合A - 集合B

     

    DataContext: Linq和DataBase的桥梁

          1.通过Linq语法与数据库交互

          2.执行SQL语句

          3.以日志形式记录DataContext生成的SQL

     

    延迟和预加载:

          IQueryable query = from 别名 in 集合 select 别名.字段;  

          (query只是一个SQL描述, 在运行时执行SQL语句, 即:得到数据是有延迟的)

          DataLoadOptions options = new DataLoadOptions();

          options.LoadWith<A>(p=>p.B);

          dataContext.LoadOptions = options;

          dataContext.A.First();

          (A和B是一对多的外键关系, Linq自动做一个左链接查询, 同时查出B, 即:预加载B的数据)


    最新回复(0)