2017-12-26 7 views
0

Linqステートメントで構文のヘルプが必要です。全体のステートメントは時間がかかり、設計コントロールを持たないSQL Serverデータベースに対して選択されます。LinqでNullが0の場合Select

私の選択した新しいフレーズには、次の列があります。 LINQPadで

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

私はのエラーを取得: 演算子を '??' 「ダブル」と「ダブル」

私が使用しているタイプのオペランドに適用することはできません?サブクエリがレコードを返さない可能性があるためです。その場合、値はゼロでなければなりません。

私は(ダブル)及び(ダブル?)に値をキャストしようとしましたが、私はまだ効果的に同じエラーを取得します。 J

私は同様のサブは声明の中で他の場所の列に選択ANそれが正常に動作しません。

    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

あなたは行に '??'を適用しています。問合せで行が戻されない場合、行がない場合はゼロに変換されません。 – GSerg

答えて

0

参考にしていただきありがとうございます。私はそれをGoogleにする方法を理解できませんでした。

この構文は機能します。

    on_Hand_Qty1 = Material_Locations 
           .Where (ml => ml.Material == j.Part_Number && ml.Location_ID != "MSSICONSMT") 
           .Sum (ml => (double?)ml.On_Hand_Qty) ?? 0, 
関連する問題