LINQ 根据指定属性名称对序列进行排序
标签:create param 指定 dna cal new pre res derby
///
/// 根据指定属性名称对序列进行排序
///
/// source中的元素的类型
/// 一个要排序的值序列
/// 属性名称
/// 是否降序
///
public static IQueryable OrderBy(this IQueryable source, string property, bool descending) where TSource : class
{
ParameterExpression param = Expression.Parameter(typeof(TSource), "c");
PropertyInfo pi = typeof(TSource).GetProperty(property);
MemberExpression selector = Expression.MakeMemberAccess(param, pi);
LambdaExpression le = Expression.Lambda(selector, param);
string methodName = (descending) ? "OrderByDescending" : "OrderBy";
MethodCallExpression resultExp = Expression.Call(typeof(Queryable), methodName, new Type[] { typeof(TSource), pi.PropertyType }, source.Expression, le);
return source.Provider.CreateQuery(resultExp);
}
LINQ 根据指定属性名称对序列进行排序
标签:create param 指定 dna cal new pre res derby
原文地址:https://www.cnblogs.com/itclw/p/12737142.html
评论