我正在IQueryable<T>
对象上执行与排序和分页相关的任务。
我使用以下代码进行动态排序:
public static IQueryable<T> OrderBy<T>(this IQueryable<T> source, string propertyName, bool asc)
{
var type = typeof(T);
string methodName = asc ? "OrderBy" : "OrderByDescending";
var property = type.GetProperty(propertyName);
var parameter = Expression.Parameter(type, "p");
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderByExp = Expression.Lambda(propertyAccess, parameter);
var orderByExp1 = Expression.Lambda(propertyAccess, parameter);
MethodCallExpression resultExp = Expression.Call(typeof(Queryable), methodName,
new Type[] { type, property.PropertyType },
source.Expression, Expression.Quote(orderByExp));
return source.Provider.CreateQuery<T>(resultExp);
}
当我通过以下信息进行升序排序时,4 Sec
。
Num = 1000;
StartIndex = 1;
SortKey = "ID";
SortOrder = true; // OrderBy
我仅在1000
中成功获得了按升序排列的4 Sec
条记录。
但是当我希望记录按降序排列时41 Sec
记录为1000
。
Num = 1000;
StartIndex = 1;
SortKey = "ID";
SortOrder = false; // OrderByDescending
升序=&gt; 4秒。
降序=&gt; 41秒。
所以我的问题是OrderByDescending
比OrderBy
慢?