반응형
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를 더 명확하게 만듭니다 .bool
false < true
0 < 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
반응형
'program story' 카테고리의 다른 글
자바 : Thread.interrupted ()와 Thread.isInterrupted ()의 사용법 차이? (0) | 2021.01.10 |
---|---|
뒤로 이동할 때 UITableView를 다시로드 하시겠습니까? (0) | 2021.01.10 |
OpenWrap 대 NuGet (0) | 2021.01.10 |
malloc을 사용할 때`void * '에서`char *'로의 잘못된 변환? (0) | 2021.01.10 |
시간당 DateTime 수에 따른 SQL Server 그룹? (0) | 2021.01.10 |