码迷,mamicode.com
首页 > Windows程序 > 详细

C# linq查询 动态OrderBy

时间:2015-02-28 18:18:37      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

groupList是原始数据集合,List<T>

sortOrder是排序类型,desc 或者asc

sortName是排序属性名称

1.使用反射。

private static object GetPropertyValue(object obj, string property)
{
      System.Reflection.PropertyInfo propertyInfo = obj.GetType().GetProperty(property);
      return propertyInfo.GetValue(obj, null);
} 

var resultList = sortOrder == "desc" ? groupList.OrderByDescending(p => GetPropertyValue(p, sortName)) : groupList.OrderBy(p => GetPropertyValue(p, sortName));

//linq方式:
//
var resultList1 = from p in groupList orderby GetPropertyValue(p, m.SortName) select p;

if (sortOrder == "desc")
    resultList1 = from p in groupList orderby GetPropertyValue(p, sortName) descending select p;

2.调用AsQueryable()

   将泛型 System.Collections.Generic.IEnumerable<T> 转换为泛型 System.Linq.IQueryable<T>。

var groupQueryList = groupList.AsQueryable();//here
var tmpList = groupQueryList .OrderBy(sortName, sortOrder);

参考:http://stackoverflow.com/questions/41244/dynamic-linq-orderby-on-ienumerablet#41262

C# linq查询 动态OrderBy

标签:

原文地址:http://www.cnblogs.com/xtechnet/p/4305850.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!