IQueryable에 대한 쿼리를 동적으로 정렬하고 정렬하려면 여러 열 (오름차순 또는 내림차순) 정렬이 가능합니다. 나는 다음과 같은 일반적인 기능을 작성했습니다 : 그럼 난 사용자가 분류 요청하는 각 열에 대해, 루프에서이 함수를 호출 오름차순 및LINQ : 많은 열을 동적으로 정렬
내림차순 :
private IQueryable<T> ApplySorting<T,U>(IQueryable<T> query, Expression<Func<T, U>> predicate, SortOrder order)
{
if (order == SortOrder.Ascending)
{
{
return query.OrderBy<T, U>(predicate);
}
}
else
{
{
return query.OrderByDescending<T, U>(predicate);
}
}
}
SORTORDER 내 간단한 2 개 값을 열거합니다. 그러나 나는 그것이 항상 마지막 열에 정렬하기 때문에 다른 것들을 무시하고 실패한 것으로 나타났습니다.
var q = db.MyType.OrderBy(x=>x.Col1).ThenBy(y=>y.Col2); //etc.
그러나 나는 그것이 일반적인 방법을 만들 수 있습니다
는 다음 나는 올바른 사용이 그래서 IOrderedQueryable에 'ThenBy'방법이있다 발견? 나는 쿼리가 IOrderedQueryable인지 테스트하려고했으나 가장 단순한 var q = x에서 db.MyType select x나는 왜 이런 식으로 설계되었는지 전혀 모른다. 무엇이 잘못 :
var q = db.MyType.OrderBy(x=>x.Col1).OrderBy(y=>y.Col2); //etc.
이
나는 (.. .. Col2의). 그들이 .OrderBy (.. COL1를 ..)하지 않는있는 OrderBy 가정 그들이 의도 한 최종 결과가있는 경우 더 좋은 방법을 알고 없습니다이기 때문이다 비행 Col1에 의해 주문한 다음, Col2에 의해 전체 목록을 다시 주문하십시오; Col1 다음에 Col2의 하위 순서 (의도 한대로) –
처음으로 쿼리 집합을 반복 할 때까지 아무 것도 수행되지 않습니다 .OrderBy를 쓸 때 쿼리 실행이 지연됩니다. – PawelRoman