2013-05-20 106 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()調用進行。您無法通過一次性致電OrderBy()來完成此操作。

例如,如果你能想的列ab進行排序,你會產生類似如下的表達式:

items.OrderBy(p => p.a).ThenBy(p => p.b)