私は次のようなdbテーブルに合成クエリを書くのが好きです:
Decimal sum = MyDataContext.MyTable.Where(el => el.Client == selectedClien).Sum(el => el.Value.GetValueOrDefault(0));
残念ながら、where句が要素をまったく返さない場合はエラーがスローされます。.Sumを使用する前に、いくつかの要素があるかどうかを.Anyで確認する必要がありますが、結果のコードは最初のコードと比較して醜いです。try/catchブロックを配置することが良い解決策だとは思わないでください。
次のコードよりも優れたものがありますか?
if (MyDataContext.MyTable.Where(el => el.Client == selectedClien).Any())
sum = MyDataContext.MyTable.Where(el => el.Client == selectedClien).Sum(el => el.Value.GetValueOrDefault(0));
else sum = 0;
ありがとうフィリッポ
さらに調査した後に追加:
MyDataContext.MyTable.Where(el => el.Client == selectedClien).Sum(el => el.Value).GetValueOrDefault(0)
上記のコードは、コレクションが空の場合に適切に機能します。.Sum()内のラムダに「GetValueOrDefault(0)」を配置した理由は、フィールド「Value」がDecimal?であるため、nullになる可能性があります。一部の要素にnull値がある場合はまだテストしていません。