C# 具有可为空列的左外部联接
我想用左外连接查询LINQ,但列可以为nullC# 具有可为空列的左外部联接,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
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