program story

LINQ를 사용하여 C #의 정렬 목록

inputbox 2021. 1. 10. 17:14
반응형

LINQ를 사용하여 C #의 정렬 목록


C #으로 목록을 정렬하고 싶습니다.

구조 속성 AVC가 true가 된 다음 먼저 표시하고 AVC가 false가되는 곳과 같습니다. C # LINQ에서이 작업을 수행하는 방법이 있습니까?


LINQ를 사용하는 가장 간단한 방법은 다음과 같습니다.

list = list.OrderBy(x => x.AVC ? 0 : 1)
           .ToList();

또는

list = list.OrderByDescending(x => x.AVC)
           .ToList();

나는 가치 의 자연스러운 순서가라고 생각 하지만, 모든 사람이 그것을 알고 있기 때문에 첫 번째 형식은 IMO를 더 명확하게 만듭니다 .boolfalse < true0 < 1

이것은 원래 목록 자체를 정렬하지 않습니다. 새 목록을 만들고 참조를 list변수에 다시 할당합니다 . 제자리에서 정렬하려면 List<T>.Sort방법을 사용해야합니다 .


이렇게?

LINQ에서 :

var sortedList = originalList.OrderBy(foo => !foo.AVC)
                             .ToList();

또는 현재 위치 :

originalList.Sort((foo1, foo2) => foo2.AVC.CompareTo(foo1.AVC));

Jon Skeet이 말했듯이, 여기서 트릭은 그것이 false'작은'것으로 간주 된다는 것을 아는 것입니다true.

코드의 여러 다른 위치에서 이러한 순서 지정 작업 Foo을 수행하는 경우 유형 가져와 IComparable<Foo>IComparable인터페이스 를 구현할 수 있습니다 .


AVC가 동일한 모든 항목 사이에서 일관된 순서를 얻기 위해 다른 항목으로도 정렬되기를 원한다고 가정합니다. 예를 들어 이름 :

var sortedList = list.OrderBy(x => c.AVC).ThenBy(x => x.Name).ToList();

참조 URL : https://stackoverflow.com/questions/4003835/sort-list-in-c-sharp-with-linq

반응형