代码如下

 

代码
 1 /// <summary>
 2 /// 对已有List进行排序
 3 /// </summary>
 4 /// <typeparam name="T">泛型</typeparam>
 5 /// <param name="list">已有List</param>
 6 /// <param name="fieldName">要进行排序的列名</param>
 7 /// <param name="sortType">排序类型</param>
 8 /// <returns>排序后的List</returns>
 9 public static List<T> ListSort<T>(IList<T> list, string fieldName, SortDirection sortType)
10 {
11     IList<FieldInfo> fieldInfos = GetFieldInfos(typeof(T));
12     foreach (FieldInfo fiItem in fieldInfos)
13     {
14         if (fiItem.Name.ToLower() == fieldName.ToLower())
15         {
16             if (sortType == SortDirection.Ascending)
17             {
18                 // 正序时
19                   return list.OrderBy(cell => fiItem.GetValue(cell)).ToList();
20             }
21             else if (sortType == SortDirection.Descending)
22             {
23                 // 倒序时
24                   return list.OrderByDescending(cell => fiItem.GetValue(cell)).ToList();
25             }
26         }
27     }
28 
29     return null;
30 }

 

 

上面红色部分为取得泛型T的字段列表, 当然, 这里使用的是字段, 如果你喜欢属性, 换成取属性列表就OK了~

 

代码
 1 public static IList<FieldInfo> GetFieldInfos(Type t)
 2 {
 3     IList<FieldInfo> list = new List<FieldInfo>();
 4     BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
 5     do
 6     {
 7         foreach (FieldInfo fi in t.GetFields(flags))
 8         {
 9             list.Add(fi);
10         }
11         t = t.BaseType;
12 
13     } while (t != null);
14 
15     return list;
16 }

 

 

posted on 2010-02-06 08:21  TonyKent  阅读(311)  评论(0编辑  收藏  举报