List多字段排序的一个通用类

时间:2020-12-22 00:08:45

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

废话不多说,直接上代码

具体使用场景:

  • 要排序的类
 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;
}
}

相关文章