zoukankan      html  css  js  c++  java
  • EF 左链接

    两个表Table1、Table2 并表查下时,如果连接字段存在空值,直接用join 查不出数据,需用左连接

     var list = from v in Table1
                join x in Table2 on v.Id equals x.Table1Id into newlist
                from d in newlist.DefaultIfEmpty()
    

    如果两个表庞大,可以在newlist 后面加where 过滤条件,大大的提高查询性能

    不过加where过滤后,在NET5版本后,很容易就报错,使用的时候注意一下

     var list = from v in Table1
                join x in Table2 on v.Id equals x.Table1Id into newlist
                from d in newlist.Where(p=>p.Id>10).DefaultIfEmpty()

    如果要用到 并表后的字段(参数 d 的字段),需要把字段都改成可空类型

     var list = from v in Table1
                join x in Table2 on v.Id equals x.Table1Id into newlist
                from d in newlist.Where(p=>p.Id>10).DefaultIfEmpty()
                select new
                {
                     v.Id,
                     BmTypeValue=(long?)d.BmTypeValue,
                     TrackUserId=(int?)d.TrackUserId,
                     AddTime=(DateTime?)d.AddTime
                }

    后续如果要使用这些可空字段,需要判断一下是否有值,或者转换成相应的非空类型,比如  int?转换成 int

  • 相关阅读:
    quartz 之misfire
    quartz 之job
    quartz 日志观察
    quartz集群原理2
    netty 之 GlobalEventExecutor
    redis 修改配置文件不起作用?
    Qto_MemberBaseQuantities
    Qto_PlateBaseQuantities
    Pset_BuildingElementProxyCommon
    matlab绘制函数(观察凹凸性)
  • 原文地址:https://www.cnblogs.com/qingheshiguang/p/13367482.html
Copyright © 2011-2022 走看看