我想按列表進行分組,然後對每個組中的項目進行計數,然後根據計數選擇每個組的最大值。下面的代碼工作,並做我所需要的。問題在於它非常緩慢,特別是第二步。你知道一種以更有效的方式達到同樣結果的方法嗎? 然後按順序計數並選擇Max by group,性能問題
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();
您是否嘗試在第一部分上創建列表,以便計數只能完成一次? –
什麼_second_步驟?只有一個查詢,它在'ToList'處執行, –
謝謝蒂姆!這正是問題所在。 – Manngo