本文中的方法旨在解决通用的问题,非常注重效率的地方,还应该针对具体的类去写排序方法。

废话不多说,直接上代码

具体使用场景:

  • 要排序的类
 1         public class bb
2 {
3 public aa a { get; set; }
4 }
5
6 public class aa
7 {
8 public string index { get; set; }
9 public string name { get; set; }
10
11 public aa(string index, string name)
12 {
13 this.index = index;
14 this.name = name;
15 }
16 }
  • 使用CommentComparer类排序
 1             List<bb> list = new List<bb>()
2 {
3 new bb(){a = new aa("13", "35")},
4 new bb(){a = new aa("14", "35")},
5 new bb(){a = new aa("12", "35")},
6 new bb(){a = new aa("14", "12")},
7 };
8
9 CommentComparer<bb> comparer = new CommentComparer<bb>();
10 //comparer.IsAsc = true;
11 //comparer.IsProperty = true;
12 comparer.AddField("a.index");
13 comparer.AddField("a.name");
14
15 list.Sort(comparer);
  • 结果

aaarticlea/png;base64,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E/oU9940bXVHu+212kv/577ebI/7utpsNrJN9O0fzQbdS4FNIBNyf6bTtMJGeqShq+G0TajNfX3cm1WPrqAxxiaqbUQx60ZWC41hFmwCa2H+dpMxxPY0UVrHj77ZpL+vjcSzUyWna/hwGmF7mxy3m6oyWk6aP6yySVe3Eoo86cEmkAmL7QvbPQTW206M103U/8cpjATLJkZKs9Y+Ija5CI00lwKbQCYs1iYvithu0v8fNoFVgE2KB5tAJmCT4sEmkAmkJQFAGiibAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAasAkApAGbAEAa/he6ds5E0bUFbQAAAABJRU5ErkJggg==" alt="" />

CommentComparer类具体实现

     /// <summary>
/// 排序类
/// </summary>
/// <typeparam name="T"></typeparam>
public class CommentComparer<T> : IComparer<T>
{
/// <summary>
/// 字段列表
/// </summary>
private List<string> fieldList; /// <summary>
/// 排序字段序号
/// </summary>
private int index = ; /// <summary>
/// 正序
/// </summary>
public bool IsAsc { get; set; } /// <summary>
/// 使用字段的属性排序
/// <para>False:使用字段排序</para>
/// </summary>
public bool IsProperty { get; set; } public CommentComparer()
{
fieldList = new List<string>();
IsAsc = true;
IsProperty = true;
index = ;
} /// <summary>
/// 添加排序使用的字段
/// </summary>
/// <param name="fieldName"></param>
public void AddField(string fieldName)
{
fieldList.Add(fieldName);
} public int Compare(T x, T y)
{
if (x == null)
{
if (y == null)
{
return ;
} return ; }
if (y == null)
{
return -;
} int result = -; if (fieldList.Count < )
{ throw new FormatException("请添加排序所使用的字段!"); }
if (index == && !IsAsc)
{
T temp;
temp = y;
y = x;
x = temp;
} string[] field = fieldList[index].Split('.'); dynamic p1 = GetValue<T>(x, field, );
dynamic p2 = GetValue<T>(y, field, ); result = Comparer<string>.Default.Compare(p1, p2);
if (result == )
{
index++;
if (fieldList.Count > index)
{ result = Compare(x, y); }
index--;
}
return result;
} /// <summary>
/// 获取属性值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="field"></param>
/// <param name="i"></param>
/// <returns></returns>
private dynamic GetValue<T>(T obj, string[] field, int i)
{
dynamic result; Type t = typeof(T); if (IsProperty)
{
PropertyInfo propertyInfo = t.GetProperty(field[i]);
result = propertyInfo.GetValue(obj, null);
}
else
{
FieldInfo fieldInfo = t.GetField(field[i]);
result = fieldInfo.GetValue(obj);
} if (i < field.Length - )
{
result = GetValue(result, field, ++i);
}
return result;
}
}

List<T>多字段排序的一个通用类的更多相关文章

  1. 根据某个字段去重 根据另一个字段排序的一个SQL

    背景:一张表 有 name , crt_time , work_sts 三个字段 这张表里存在这样的数据 'a', '2018-12-18 21:37:24', '未''a', '2018-12-19 ...

  2. sql 多个字段排序,头一个字段排序完,再对第二个字段进行排序(以此类推)

    现根据num排序,num数字相同的根据时间进行排序,都是降序DESC SELECT * FROM counts ORDER BY num DESC,create_time DESC

  3. .NET基础篇——Entity Framework 数据转换层通用类

    在实现基础的三层开发的时候,大家时常会在数据层对每个实体进行CRUD的操作,其中存在相当多的重复代码.为了减少重复代码的出现,通常都会定义一个共用类,实现相似的操作,下面为大家介绍一下Entity F ...

  4. php 数组排序以及按照某个字段排序

    经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用.PHP提供了一些适合多种数组的排序函数,这些函数允许你在数组内部对元素进行排列,也允许用很多不同的方法对它们进行重新排序. ...

  5. PHP 二维数组根据某个字段排序

    二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort  对数组的值按 ...

  6. 对文本行按特定字段排序(前N个字符或后N个字符),TCPL 练习5-17

    The C programming language 的关于文本行排序的问题有很多种要求的方式,在对每行的字段排序方面,最简单的是例如对前N个字符或者末位N个字符进行排序,更高一点的要求是,对特殊符号 ...

  7. 一个通用的DataGridView导出Excel扩展方法(支持列数据格式化)

    假如数据库表中某个字段存放的值“1”和“0”分别代表“是”和“否”,要在DataGridView中显示“是”和“否”,一般用两种方法,一种是在sql中直接判断获取,另一种是在DataGridView的 ...

  8. 利用RBAC模型实现一个通用的权限管理系统

    本文主要描述一个通用的权限系统实现思路与过程.也是对此次制作权限管理模块的总结. 制作此系统的初衷是为了让这个权限系统得以“通用”.就是生产一个web系统通过调用这个权限系统(生成的dll文件), 就 ...

  9. 我写的一个ExcelHelper通用类,可用于读取或生成数据

    读取或生成EXCEL数据的方法有很多,一般常见的有: 1.通过OFFICE EXCEL组件,优点:读取与生成EXCEL文件方便,缺点:服务器上必须安装OFFICE软件,且进程无法及时释放 2.通过第三 ...

随机推荐

  1. 【LCA最近公共祖先】在线离线

    [在线] 1.倍增法 现将深度较大的跳至与深度较小的统一深度.预处理$fa[u][i]$表示$u$往上跳$2^i$个单位后的祖先,则就可以像快速幂一样,将移动的步数化为二进制,如果第$i$位为$1$, ...

  2. HDU 1789 Doing Homework again(馋)

    意甲冠军  参加大ACM竞争是非常回落乔布斯  每一个工作都有截止日期   未完成必要的期限结束的期限内扣除相应的积分   求点扣除的最低数量 把全部作业按扣分大小从大到小排序  然后就贪阿  能完毕 ...

  3. 用决策树模型求解回归问题(regression tree)

    How do decision trees for regression work? 决策树模型既可以求解分类问题(对应的就是 classification tree),也即对应的目标值是类别型数据, ...

  4. JSP页面中taglib的uri设置

    今天遇到这样一个问题,使用JAVA做了个WEB应用,其中用到一个自定义标签.该标签的class文件与tld(tld文件中,uri定义为:http://wallimn.iteye.com/myfuncs ...

  5. Android如何获得系统版本

    如何获得Android系统版本 项目移植中,遇到需要区分不同系统版本的问题.于是查找相关方法如下: android.os.Build类提供了当前系统信息. 可用if (Build.VERSION.SD ...

  6. smarty循环

    1. 功能说明,在页面使用smarty循环100次输出,类似for循环100次{section name=total loop=100}{$smarty.section.total.index+1} ...

  7. OpenCV For iOS 1:&#160;连接OpenCV 3.0

    本文的内容參考Instant OpenCV for iOS结合最新的开发平台完毕. 本系列文章採用的的开发环境为: 1)Xcode 6 2)OpenCV for iOS 3.0.0 alpha 接下来 ...

  8. Leetcode 238 Product of Array Except Self 递推

    给出一个数组 nums[i](i = 0,1,...,n-1)  输出数组output[i]满足 output[i] = nums[0] * num[1] * num[2] *..*num[i-1] ...

  9. HDU 1618 Oulipo KMP解决问题的方法

    鉴于两个字符串,寻找一个字符串的频率,另一个字符串出现. 原版的kmp另一个陷阱.以下凝视了,标不是踩着好,有加班一定几率,也有机会错误,根据不同的字符串可以是详细. 变化看起来像一个,kmp速度是非 ...

  10. objective-c启用ARC时的内存管理

    PDF版下载:http://download.csdn.net/detail/cuibo1123/7443125      在objective-c中,内存的引用计数一直是一个让人比較头疼的问题.尤其 ...