次のLINQステートメントは、特定のプロパティに対して重複する値を持つ項目を検出し、countでグループ化し、次にブール値を戻す別のグループ化を行います。どのようにこのLINQ文を高速化するために最適化できますか?
これはどのように改善することができますか、それは少し無駄に思われます。これはオブジェクトモデルの検証ライブラリの一部なので、できるだけ早くそれを得ることができます。
実行のスピードが優先されますが、他の提案も歓迎します。
var grouped = from g2 in
(from i in item.ParentList
where _filter(i)
group i by propGetter(i) into g
select new { Count = g.Count(), Items = g })
group g2 by g2.Count == 1 into g3
select new { IsUnique = g3.Key, Items = g3 };
foreach (var g in grouped)
{
foreach (var grp in g.Items)
{
foreach (var itm in grp.Items)
{
if (g.IsUnique == false)
itm.AddPropertyError(_propertyName, (int)Validations.Unique, _message);
else
itm.RemovePropertyError(_propertyName, (int)Validations.Unique);
}
}
}
どのような改善がありましたか? – Oded
あなたは直面しているパフォーマンスヒットは何ですか? – V4Vendetta
申し訳ありません。質問を編集して詳細を追加しました。私は実際に顕著なパフォーマンスヒットを経験していない、ちょうど(私に)少し無駄に見える。私は決してLINQの専門家ではありません。 – Marlon