リストでグループ化し、各グループの項目を数え、その数に基づいて各グループの最大値のみを選択します。次のコードは機能し、私が必要とするものを正確に行います。問題は、それが非常に遅いことです。特に2番目のステップです。より効率的な方法で同じ結果を達成する方法を知っていますか? 順番に並べ替え、グループ別の最大値、パフォーマンスの問題を選択してください。
var grouppedList = sourceList.Where(j => j.field1 == "1000")
.GroupBy(i => new { mask = i.field2.Substring(0, 1), f3 = i.field3, f4 = i.field4 })
.Select(k => new
{
f4 = k.Key.f4,
mask = k.Key.mask,
f3 = k.Key.f3,
Total = k.Count()
});
var totalsList = grouppedList
.Where(i => !grouppedList.Any(j =>
j.mask == i.mask && j.f4 == i.f4 && j.Total > i.Total))
.ToList();
最初のセクションにリストを作成してカウントが1回だけ行われるようにしましたか? –
_second_ステップは何ですか?クエリが1つしかなく、ToListで実行されます –
ありがとうTim!これはまさに問題でした。 – Manngo