我想用 Linq 对多列进行排序
我使用这个链接作为参考,它用于按列名对单列进行排序。
我正在尝试使用此方法对具有列名的多个列进行排序。
这是我到目前为止所做的
public static IQueryable<T> OrderByMultipleFields<T>(this IQueryable<T> q, Dictionary<string, bool> fieldsToSort)
{
var param = Expression.Parameter(typeof(T), "p");
var prop = Expression.Property(param, fieldsToSort.First().Key);
var exp = Expression.Lambda(prop, param);
string methodAsc = "OrderBy";
string methodDesc = "OrderByDescending";
string method=string.Empty;
Type[] types = new Type[] { q.ElementType, exp.Body.Type };
var mce = q.Expression;
int count = 0;
foreach (var fieldName in fieldsToSort)
{
method = fieldName.Value ? methodAsc : methodDesc;
prop = Expression.Property(param, fieldName.Key);
exp = Expression.Lambda(prop, param);
types = new Type[] { q.ElementType, exp.Body.Type };
if (count == 0) {
mce = Expression.Call(typeof(Queryable), method, types, q.Expression, exp);
} else {
mce = Expression.Add(mce, Expression.Call(typeof(Queryable), method, types, q.Expression, exp));
}
methodAsc = "ThenBy";
methodDesc = "ThenByDescending";
count++;
}
return q.Provider.CreateQuery<T>(mce);
}
我收到以下错误 -
1[SortDemo.Data.User]' and 'System.Linq.IOrderedQueryable
没有为类型“System.Linq.IOrderedQueryable 1[SortDemo.Data.User]”定义二元运算符 Add 。
实现此目的的正确方法是什么,或者是否有任何替代方法或方法。谢谢。