IT story

LINQ를 사용한 여러 주문 방법

hot-time 2020. 4. 29. 08:11
반응형

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 방식을 사용하여 원하는 것을 달성 할 수있는 방법이 있습니까?


ThenByThenByDescending 확장 메소드를 사용할 수 있습니다 .

foobarList.OrderBy(x => x.Foo).ThenBy( x => x.Bar)

참고 URL : https://stackoverflow.com/questions/2318885/multiple-order-by-with-linq

반응형