2013-05-20 1 views
0

내 EF 일반 리포지토리에 대한 orderby 식을 다음과 같이 만듭니다. string command = orderByDesc? "OrderByDescending": "OrderBy";여러 열 OrderBy 식에 대한 식 트리를 만드는 방법

var type = typeof(T); 

var property = type.GetProperty(orderby); 

var parameter = Expression.Parameter(type, "p"); 

var propertyAccess = Expression.MakeMemberAccess(parameter, property); 

var orderByExpression = Expression.Lambda(propertyAccess, parameter); 

var resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { type, property.PropertyType }, 

         items.Expression, Expression.Quote(orderByExpression)); 
items = items.Provider.CreateQuery<T>(resultExpression); 

주문을 위해 2 열로 표현식을 만들고 싶지만 도움이되는 것을 찾을 수 없었습니다.

2 열로 orderby 표현식을 작성하는 데 도움을주십시오.

답변

1

LINQ에서 여러 열을 정렬하려면 OrderBy()을 호출 한 다음 ThenBy()을 0 개 이상 호출해야합니다. OrderBy()에 대한 단일 호출을 사용하여이 작업을 수행 할 수 없습니다.

items.OrderBy(p => p.a).ThenBy(p => p.b) 
: 당신이 열 ab을 기준으로 정렬 할 수있는 경우

예를 들어, 같은 것을 보이는 표현을 생성해야합니다