0

linqクエリでifandelseステートメントを使用しようとしていますが、正しい結果を表示できません。以下にコードの一部を示します。

from c in dc.Train_TBLs select new {c.CodeTrain,
DBL1 = (from u in dc.Train_NormalRate_TBLs where u.CodeTrainID == c.CodeTrainID orderby u.NormalRateID ascending select u.DBL).First(),
TPL1 = (from u in dc.Train_NormalRate_TBLs where u.CodeTrainID == c.CodeTrainID orderby u.NormalRateID ascending select u.TPL == (decimal?)null ? u.DBL / 2 * 3 == (decimal?)null : u.TPL != 0).First(),....}

フィールドTPL1で、「u.TPL」の値が「0」またはnullに等しい場合に、フィールド「u.DBL」の値を2で除算し、3で乗算する場合に表示することを意図していますが、私は自分のコードで運が良くないので、正しい結果を表示する方法について何か提案がありますか。

4

1 に答える 1

3

私はこれがあなたが望むものだと思います:

select ((u.TPL ?? 0) == 0 ? u.DBL / 2 * 3 : u.TPL)

最後のものをこれに置き換えますselect

あなたが言った:

「u.TPL」の値が「0」またはnullに等しい場合、フィールド「u.DBL」から値を2で除算し、3で乗算します。

(u.TPL ?? 0) == 0ウィーターu.TPLが0またはnullであることを確認します。そうである場合は、を返しu.DBL / 2 * 3、そうでない場合は自分自身を返しu.TPLます。このコードu.TPLは、null許容(として定義decimal?)の場合にのみ機能します

于 2013-02-18T08:38:58.867 に答える