2
クエリの選択部分のLINQクエリで計算される2つのプロパティがあります。別のプロパティで別の計算を実行するには、これらのプロパティの結果を使用する必要があります。私はこの計算されたフィールドで以前のプロパティを使用するLinq selectクエリ
var query = data
.Select(model => new
{
SomeProperty1 = model.Sum(x => x.Foo),
SomeProperty2 = model.Sum(x => x.Bar),
SomeProperty3 = this.SomeProperty2 == 0 ? 0 :
this.SomeProperty1/this.SomeProperty2
};
例が大幅に簡潔にするために短縮されて行うことができますいくつかの方法があった場合
現在、私がやっている方法をこの
var query = data
.Select(model => new
{
SomeProperty1 = model.Sum(x => x.Foo),
SomeProperty2 = model.Sum(x => x.Bar),
SomeProperty3 = model.Sum(x => x.Bar) == 0 ? 0 :
model.Sum(x => x.Foo)/model.Sum(x => x.Bar)
};
は思っていました。私の実際のクエリでは、計算にはかなり時間がかかります。
これはモデルのプロパティのget
部分で実行できると思いますが、linqクエリで上記のように実行できるかどうかは不思議でした。
ありがとうございます!
私が望むよりも冗長な表現ですが、クエリの現在の状態よりも優れています。私はこれを答えとして受け入れます。 –
@DavidLeeの利点は、合計がここで一度だけ計算されることです。 –
これらの変数をネストできますか? –