左外连接与可空列

时间:2019-07-27 10:57:45

标签: c# entity-framework linq

我想用左外部联接但列为空的LINQ进行查询

YarnRequsitionDetailID在其他Yarn_PurchaseOrder_Details表中也为空,我必须基于该表申请加入

  var yarnPOFilter_Grid = (from yrq in _context.Yarn_Requisition_Details
                                     join ypo in 
     _context.Yarn_PurchaseOrder_Details on yrq.YarnRequsitionDetailID equals 
      ypo.YarnRequsitionDetailID into t

     from rt in t.DefaultIfEmpty()  
                                     select new
                                     {
                                         YarnRequsitionDetailID = 
                                         rt.YarnRequsitionDetailID,
                                         yrq.YarnID,
                                         yrq.Yarn.YarnName,
                                         yrq.YarnFellowID,
                                         yrq.Yarn_FellowCodes.YarnFellowCode,
                                         yrq.QuantityRequired,
                                         rt.QuantityOrdered,
                                         QuantityBalance_Custom = 
      yrq.QuantityRequired - rt.QuantityOrdered
                                     }).ToList();
            return yarnPOFilter_Grid;

出现以下错误

强制转换为值类型'System.Double'失败,因为实例化值为null。结果类型的通用参数或查询必须使用可为空的类型。

2 个答案:

答案 0 :(得分:1)

如果您的<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/white_bg" > <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> <FrameLayout> Button Code Here </FrameLayout> </RelativeLayout> 可为空,则可以将其设为空,因此您可以为其属性分配空值

因为YarnRequsitionDetailID不能接受null,但是double可以接受null

答案 1 :(得分:0)

联接实体中具有非空值类型的任何字段之一都应在投影表达式中强制转换为相应的可空类型。例如,如果QuantityRequired是数据库中的必填字段:

var yarnPOFilter_Grid = (
        ...
        from rt in t.DefaultIfEmpty() select new {
            ...
            QuantityRequired = (double?)yrq.QuantityRequired,