【发布时间】:2017-12-26 19:56:02
【问题描述】:
我需要一些关于 Linq 语句的语法帮助。整个语句很长,并且针对我无法控制的 SQL Server 数据库进行选择。
在我选择的新短语中,我有以下列;
on_Hand_Qty1 = (from x1 in Material_Locations
where x1.Material == j.Part_Number
&& x1.Location_ID != "MSSICONSMT"
select x1.On_Hand_Qty ?? 0.0).Sum()
,
在 LINQPad 中,我收到以下错误: 操作员 '??'不能应用于'double'和'double'类型的操作数
我正在使用 ??因为子查询有可能不返回任何记录。在这种情况下,该值应为零。
我尝试将值强制转换为 (double) 和 (double?),但我仍然有效地得到相同的错误。 j
我在语句中其他地方的列上进行了类似的子选择,它工作正常;
Consignment = (from x in Material_Locations
where x.Material == j.Part_Number
&& x.Location_ID == "MSSICONSMT"
select(float?) x.On_Hand_Qty ?? 0.0 ).ToList()
我在这里错过了什么?
谢谢!
【问题讨论】:
-
您正在将
??应用于一行。如果查询没有返回任何行,它不会将缺少的行转换为零。
标签: c# sql-server linq linqpad