나는 clusters라는 목록을 가지고 있으며 그 목록에는 sequenceno가있는 tags라는 또 다른 목록이 있습니다.다음 목록을 어떻게 정렬합니까?
한 줄에 람다 식을 사용하여 각 클러스터의 태그에서 최대 seuqenceno를 사용하여 클러스터를 정렬하는 방법은 무엇입니까?
뭔가
같은clusters.Sort((a,b) => a.tags......
나는 clusters라는 목록을 가지고 있으며 그 목록에는 sequenceno가있는 tags라는 또 다른 목록이 있습니다.다음 목록을 어떻게 정렬합니까?
한 줄에 람다 식을 사용하여 각 클러스터의 태그에서 최대 seuqenceno를 사용하여 클러스터를 정렬하는 방법은 무엇입니까?
뭔가
같은clusters.Sort((a,b) => a.tags......
없는 매우 효율적인 솔루션 (O는 (N N) 최대 값을 기록 계산하지만, 현재 위치에서 실행) :
clusters.Sort((a,b) => a.tags.Max(x => x.sequenceno)
.CompareTo(b.tags.Max(x => x.sequenceno)));
다소 더 나은 솔루션 (만 O를 계산 (N) 최대 값이지만 실제 작동하지 않습니다.) :
var max = clusters.ConvertAll(c => c.tags.Max(x => x.sequenceno);
clusters = clusters.Select((x,i) => new{x,i})
.OrderBy(xi => max[xi.i].CompareTo(max[xi.j]))
.Select(xi => xi.x)
.ToList();
이 정렬을 내부에서 효율적으로 수행하는 것은 어려울 것입니다 없이
사실이지만 최적화하기 전에 실제로 성능 문제가 있는지 확인하십시오. 태그 목록이 너무 크지 않으면 방해하지 않을 것입니다. – jeroenh
유효성 검사 문제가 이미 처리되었으므로 적절한 솔루션이 효과적입니다. 또한 태그 목록은 아주 작습니다. 감사! – RemoteSojourner
@ 제론 : 맞아. 나는 비효율적 인 부분이 무엇인지 구체적으로 언급했고, 결정을 내리는 것이 얼마나 쉽게 비효율적 이었는지를 언급했다. –
:
var orderedClusters = clusters.OrderBy(list => list.Max(item => item.SequenceNo))
@downvoter는 설명을 신경 써야하나요? – jeroenh
는 비즈니스 요구 사항의 "한 줄에"어떤 종류인가? –