如果在Linq选择中为零则为零

时间:2017-12-26 19:56:03

标签: c# sql-server linq linqpad

我需要一些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?)但我仍然得到了相同的错误。 Ĵ

我在声明中的其他位置执行类似的子选择,它可以正常工作;

                  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()

我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢您帮助查找参考资料。我无法弄清楚如何谷歌。

此语法可以正常工作。

                  on_Hand_Qty1 = Material_Locations
                                .Where (ml => ml.Material == j.Part_Number && ml.Location_ID != "MSSICONSMT" )
                                .Sum (ml => (double?)ml.On_Hand_Qty) ?? 0,