일반 목록 DESC 및 ASC를 어떻게 정렬 할 수 있습니까? LINQ가 있고 LINQ가 없습니까? VS2008을 사용하고 있습니다.
class Program
{
static void Main(string[] args)
{
List<int> li = new List<int>();
li.Add(456);
li.Add(123);
li.Add(12345667);
li.Add(0);
li.Add(1);
li.Sort();
foreach (int item in li)
{
Console.WriteLine(item.ToString() + "\n");
}
Console.ReadKey();
}
}
답변
Linq와 함께
var ascendingOrder = li.OrderBy(i => i);
var descendingOrder = li.OrderByDescending(i => i);
Linq없이
li.Sort((a, b) => a.CompareTo(b)); // ascending sort
li.Sort((a, b) => b.CompareTo(a)); // descending sort
Linq가 없으면 목록 자체가 정렬됩니다. Linq를 사용하면 목록의 열거 가능한 순서가 표시되지만 목록 자체는 변경되지 않았습니다. 목록을 변경하려면 Linq 메서드를 다음과 같이 변경합니다.
li = li.OrderBy(i => i).ToList();
답변
Linq없이 :
오름차순 :
li.Sort();
내림차순 :
li.Sort();
li.Reverse();
답변
linq가 없으면 사용 Sort()
하고 사용 Reverse()
하십시오.
답변
위의 모든 답변을 확인하고 추가 정보를 하나 더 추가하고 싶었습니다. 나는 목록을 DESC 순서로 정렬하고 싶었고 더 큰 입력에 대해 더 빠른 솔루션을 찾고 있었고 이전 에이 방법을 사용했습니다.
li.Sort();
li.Reverse();
하지만 내 테스트 케이스는 시간 제한을 초과하여 실패했기 때문에 아래 솔루션이 저에게 효과적이었습니다.
li.Sort((a, b) => b.CompareTo(a));
따라서 궁극적으로 결론은 내림차순으로 목록을 정렬하는 두 번째 방법이 이전보다 약간 빠르다는 것입니다.
답변
내림차순으로 int 값으로 목록을 정렬하는 매우 간단한 방법 :
li.Sort((a,b)=> b-a);
이것이 도움이되기를 바랍니다!