반응형
LINQ를 사용한 여러 주문 방법
LINQ를 사용하여 List에서 조작하려는 기본 클래스로 시작합니다. 다음과 같습니다.
public class FooBar
{
public virtual int Id { get; set; }
public virtual string Foo{ get; set; }
public virtual string Bar{ get; set; }
}
이것이 람다가 아닌 LINQ를 사용하여 내 문제를 해결하기 위해 궁극적으로 알게 된 것입니다.
// code somewhere else that works and gets the desired results
var foobarList = GetFooBarList(); // Abstracted out - returns List<Foobar>
// Interesting piece of code that I want to examine
var resultSet = from foobars in foobarList
orderby foobars.Foo, foobars.Bar
select foobars;
// Iterate and do something interesting
foreach (var foobar in resultSet)
{
// Do some code
}
내가 정말로 궁금한 점은 동일한 것을 달성하기 위해 일반적인 IEnumerable에서 Lambda 기반 확장 메소드를 사용하여 동일한 것을 달성 할 수 있는지입니다. 구글은 그것을 달성하기 위해 다음과 같은 것을 할 수 있다고 말합니다.
var resultSet = foobarList.OrderBy(x => new {x.Foo, x.Bar})
.Select(x=>x);
그러나 그렇게하면 foreach 문을 눌렀을 때 런타임 오류가 발생합니다. 오류는 적어도 하나의 객체가 IComparible을 구현해야한다는 것을 알려줍니다. 이는 .OrderBy () 메서드에 익명 형식을 사용하고 있기 때문에 알 수 있습니다.
Lambda 방식을 사용하여 원하는 것을 달성 할 수있는 방법이 있습니까?
ThenBy 및 ThenByDescending 확장 메소드를 사용할 수 있습니다 .
foobarList.OrderBy(x => x.Foo).ThenBy( x => x.Bar)
참고 URL : https://stackoverflow.com/questions/2318885/multiple-order-by-with-linq
반응형
'IT story' 카테고리의 다른 글
갈퀴 작업에서 일찍 돌아 오려면 어떻게해야합니까? (0) | 2020.04.29 |
---|---|
UNIX에서 디렉토리 만 나열 (0) | 2020.04.29 |
리눅스 커맨드 라인에서 sha256 생성하기 (0) | 2020.04.29 |
콘텐츠 보안 정책은 어떻게 작동합니까? (0) | 2020.04.29 |
스토리 보드의 사용자 정의 셀 행 높이 설정이 응답하지 않습니다 (0) | 2020.04.29 |