0

私はLightSwitchアプリケーションを書いていますが、アドバイスがあればできます。

真であり、クライアントに関連しているという基準を満たす、親オブジェクトに関連する子オブジェクトの総数を計算したかったのです。

partial void OpenPositions_Compute(ref int result)
{
    foreach (Position position in this.DataWorkspace.ApplicationData.Positions)
    {
        if (position.IsPositionOpen && position.Client.Id == this.Id)
        {
            result++;
        }
    }
}

私はforeachループを使用せずにクライアントが持っていたポジションの数を計算する実験をしました、そして私はこれを思いつきました:

partial void TotalPositons_Compute(ref int result)
{
    result += this.Position.Count();
} 

質問1:スニペット1をより良い/より効率的な方法で書くことは可能ですか?おそらくラムダ方程式として?(または2番目のコードスニペットと同様)

質問2:コードの可読性以外にラムダ方程式はどのような利点をもたらしますか?

4

1 に答える 1

2

質問1:

partial void OpenPositions_Compute(ref int result)
{
    result = this.DataWorkspace.ApplicationData.Positions
        .Count(p => p.IsPositionOpen && position.Client.Id == this.Id);
}

質問2:

用途によります。この場合、カウント機能を再実装しなくてもLINQを使用できるため、最大の利点は簡潔なコードです。パフォーマンスが向上する場合があります。再びLINQを例として使用すると、LINQは遅延実行を使用して、必要になるまでコードが実行されないようにします。

通常、ラムダはソリューションではなく、ソリューションの一部です。LINQを使用することは、一般的にこのようなことの解決策です。

于 2012-04-16T22:11:09.467 に答える