zoukankan      html  css  js  c++  java
  • LINQ 学习笔记5 Kevin

    查询表达式

    1.标准点式语法 和 标准表达式法


    标准表达式法接近于SQL语法,点式语法则更便于使用。C#语言并没有要求我们必须使用哪种方式,很显然,点式语法是更好的选择。

    在标准表达式法中,Select放在了语句的最后,这样做的原因是为了是方便VS的智能提示。

    2.点式语法中常用的查询操作:Where,Select,SelectMany,Join,GroupJoin,GroupBy,OrderBy,ThenBy,OrderByDescending,ThenByDescending.

     

    3.查询表达式语法:


    1.查询表达式必须以from开头

    2.查询表达式必须包含0个或多个from,let,或者 Where从句。from从句是生成一个或多个范围变量结果的产生器,或者join多个连续的结果集。

    let从句引用了一个范围变量而且赋值给他。Where从句的作用是从多个结果集中过滤一个结果。

    3.在查询语句后跟orderby可以对结果进行排序 , ascending或descending 升序或降序。

    4.查询表达式必须跟一个select 或group

    5.然后查询表达式可以跟一个可选的从句,可以是into从句也可以是join从句,或者是从2来的一个子句。

    透明标识符

    (ORZ。。没有中文参考资料。。)

    简单的说,是编译器在标准表达式的翻译过程中用到的一种标识,用*号来标识,但不同于SQL语句中的*,而且它只存在于翻译的过程中,一旦表达式的翻译过程完成,这种标识便不再存在。

    翻译表达式机制:

    1.Select and Group从句

    有into的从句,将会进行下面的翻译:

    from ...into i....==========> from i in from .....

    2.显式枚举变量


    一旦表达式中from从句包含一个显示枚举变量,将会进行下面的翻译:

    from T e in S =============> from e in s.Cast<T>

    如果包含join

    Join T e in s on k2,equals k2=========>join e in s.Cast<T> on k2,equals k2

    3.Join 从句

    from e1 in s1 join e2 in s2 on k2 equals k2 select f

    ======>

    from t in s2.join(s2,e=>k1,e2=>k2,(e1,e2)=>f) select t;

    4.如果一个查询表达式包含一个from从句后跟into表达式和select从句,将进行以下的翻译:

    from e1 in s1 join e2 in s2 on k1 equals k2 into i select f

    ======>

    from t in s1.GroupJoin(s2,e1=>k1,e2=>k2,(e,i)=>f) Select f

    5.如果一个表达式包含from从句后跟join从句,将进行一下的翻译:

    from  e1 in s1 join e2 in s2 on k1 equals k2

    ======>

    from * in from e1 in s1 join e2 in s2 on k1 equals k2 select new {e1,e2}

    6.Let 和 Where 从句

    如果查询表达式包含一个from从句,而且后面直接跟这一个let从句,将执行下面的翻译:

    from e in s let l=v

    =======>

    from * in from e1 in s1 select new {e,l=v};

    查询语句from后面跟一个where从句,将执行一下翻译:

    from e in s where  w ======>  from e in s.where (e=>w);

    7.多个产生器从句 

    如果查询表达式包含多个from从句,后面跟了一个selelct 从句,将执行下面的翻译:

    from e1 in s1 from e2 in s2 select f

    =====>

    from c in s1.SelectMany(e1=> from e2 in s2 select f) select c;

    8.Orderby

    from  e in s order by o1,o2 

    =======>

    from e in s.orderby(e=>o1).ThenBy(e=>o2);

    Chapter 2 Summary

    1.var 关键字

    2.扩展方法,使给一个类似密封类,或者你没有源码的类对象添加方法成为了可能。

    3.Lambda表达式和匿名方法

    4.表达式树提供了第三方的数据源

    5.分部方法提供了一个轻量级的处理模型。

    6.查询表达式

     

  • 相关阅读:
    MySQL主从复制与读写分离
    使用PHPCMS搭建wap手机网站
    phpcms v9不用下插件自己做留言板
    css关于banner图轮播的实现
    MySql和Oracle的日期转换到底有哪些不同?我们来比较一下
    CSS---解决内容过多就会出文本溢出(显示在区域外面,不换行的情况)
    dedecms 后台发布后的文章不能编辑出现一片空白的解决办法
    python常识系列11-->python发送邮件基础
    python常识系列10-->python代码注释规范
    python常识系列09-->logging模块之handlers的使用
  • 原文地址:https://www.cnblogs.com/kfx2007/p/2700464.html
Copyright © 2011-2022 走看看