목록별로 그룹화하려고 시도한 다음 각 그룹의 항목 수를 계산 한 다음 해당 수를 기반으로 각 그룹의 최대 값만 선택하려고합니다. 다음 코드는 올바르게 작동하고 필요한 부분을 수행합니다. 문제는 그것이 매우 느립니다, 특히 두 번째 단계입니다. 보다 효율적인 방법으로 동일한 결과를 얻을 수있는 방법을 알고 계십니까? 다음으로 정렬하여 그룹 수, 성능 문제로 최대 수를 선택하십시오.
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();
첫 번째 섹션에서 목록을 만들려고 했으므로 한 번만 계산됩니다. –
_ 초 단계 무엇입니까? 쿼리가 하나 뿐이므로 ToList에서 실행됩니다. –
Thanks Tim! 이것은 정확히 문제였습니다. – Manngo