LINQ 根据指定属性名称对序列进行排序
2015-01-08 13:49
721 查看
/// <summary>
/// 根据指定属性名称对序列进行排序
/// </summary>
/// <typeparam name="TSource">source中的元素的类型</typeparam>
/// <param name="source">一个要排序的值序列</param>
/// <param name="property">属性名称</param>
/// <param name="descending">是否降序</param>
/// <returns></returns>
public static IQueryable<TSource> OrderBy<TSource>(this IQueryable<TSource> 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<TSource>(resultExp);
}
/// 根据指定属性名称对序列进行排序
/// </summary>
/// <typeparam name="TSource">source中的元素的类型</typeparam>
/// <param name="source">一个要排序的值序列</param>
/// <param name="property">属性名称</param>
/// <param name="descending">是否降序</param>
/// <returns></returns>
public static IQueryable<TSource> OrderBy<TSource>(this IQueryable<TSource> 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<TSource>(resultExp);
}
相关文章推荐
- LINQ 通过动态生成lambda表达式,实现根据指定属性名称对序列进行排序
- postgresql根据指定序列进行自定义排序
- 实体类实现根据指定属性进行排序
- 根据对象的某一属性进行排序的js代码(如:name,age)
- 根据NSArray里边的Object的某个属性进行排序
- Python 列表中存储类对象时按照指定属性进行排序——用于正排表的排序
- 根据NSArray里边的Object的某个属性进行排序
- js,jquery 根据对象某一属性进行排序
- 对JavaScript对象数组按指定属性和排序方向进行排序
- 根据类中的某个属性对类进行排序
- 根据集合中 某两个属性 进行集合排序
- 对一篇英文短文进行统计排序(标点不考虑)。生成这样的结果: 整理出现的26(也可能不足26)个字母,根据字母出现的数量由多到少排序。若数量相同则按照字母表顺序列。 生成的结果大致为“ffffffffffffffffffffeeeeeeerrrrrrzzzzzzaaabbccu”。
- 根据NSArray里边的Object的某个属性进行排序
- 如何根据对象的属性,对集合(list / set)中的对象进行排序
- JavaScript对象数组如何按指定属性和排序方向进行排序
- 使用Arrays.sort()对自定义的entity按指定属性进行排序。
- List<>根据指定属性排序(实现IComparer接口)
- 【原创】Java 对 List 内对象根据对象属性进行排序
- java中根据集合属性进行排序
- javascript 数组对象根据指定属性排序