Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有可为空列的左外部联接_C#_Entity Framework_Linq - Fatal编程技术网

C# 具有可为空列的左外部联接

C# 具有可为空列的左外部联接,c#,entity-framework,linq,C#,Entity Framework,Linq,我想用左外连接查询LINQ,但列可以为null yarnrequisitiondetaild在其他warn\u PurchaseOrder\u Details表中也是空的,我必须在此基础上申请加入 var yarnPOFilter_Grid = (from yrq in _context.Yarn_Requisition_Details join ypo in _context.Yarn_PurchaseO

我想用左外连接查询LINQ,但列可以为null

yarnrequisitiondetaild
在其他
warn\u PurchaseOrder\u 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。结果类型的泛型参数或查询必须使用可为null的类型。

如果您的
yarnRequisitionDetail可为null,则将其设置为null,以便为其属性分配null


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

因此,应在投影表达式中将连接实体中任何一个不可为null值类型的字段转换为相应的可为null的类型。例如,如果
QuantityRequired
是数据库中的必填字段:

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

请参阅msdn示例了解左侧外部联接:我已经这样做了,但在我的情况下没有帮助将定义从Double更改为Double?YarnRequisitionID是纱线(请购单)详细信息中的主键,而纱线(采购订单)详细信息中的外键,也可以为null