• Linq的一些记录


    1.

    IQueryable接口与IEnumberable接口的区别:  IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。

    2.

    Linq使用Func<T, bool>时候会产生全表查询,使用Expression<Func<T, bool>>这个来避免,参考:http://www.cnblogs.com/dudu/archive/2012/04/01/enitity_framework_func.html

    3.

    EF的find方法是先从内存中查询,内存中没有才查询数据库。

    4.

    调用Load方法就会加载数据到内存中

    5.

    this.actionServer.Delete(t => list.Contains(t.Id)),使用这样的方法删除,会生成一天select语句,然后根据查询到的数据逐个删除,根据查到的数据生成多个删除语句

    6.

    仅对 LINQ to Entities 中已排序的输入支持方法“Skip”。必须在调用“Skip”方法之前调用方法“OrderBy”。(排序时用skip需要注意)

    7.

    在使用Json序列化EF的Model时,Model有导航属性,可以使用Select以避免导航属性在序列化时产生循环引用,例如:

    select(t=>new{t.xxx,t.xxx})控制字段,记得返回的对象为var类型
    8.

    linq 的like
    obj.Name.Contains("名字")//%名字%
    obj.Name.EndsWith("名字")//名字%
    obj.Name.StartsWith("名字")//%名字
    System.Data.Linq.SqlClient.SqlMethods.Like(t.Name, "客服%(这里可以写通配符表达式)")

    9.

    in 与 not in

    //in 操作
    int[] i={1,2};
    var s=db.Categories.Where(t=>i.Contains(t.CategoryID));

    //not in 操作
    int[] i={1,2};
    var s=db.Categories.Where(t=>!i.Contains(t.CategoryID));

  • 相关阅读:
    Qt 交换Layout中的QWidget控件位置
    霍夫变换(Hough)
    图像傅里叶变换
    通俗讲解:图像傅里叶变换
    傅里叶分析之掐死教程(完整版)
    一幅图弄清DFT与DTFT,DFS的关系
    Qt 实现简单的TCP通信
    Qt 基于TCP的Socket编程
    Socket原理讲解
    科研相机选择:sCMOS还是CCD?
  • 原文地址:https://www.cnblogs.com/RainbowInTheSky/p/4515475.html
Copyright © 2020-2023  润新知