我有一个包含大量字符串的 ArrayList。它需要根据Name、Age和Amt三个字段(基本上是三个子字符串)进行就地排序。Age是第一个子字符串(位置 0-3),Name是第二个(3-6),Amt是最后一个(6-10)。这些参数的排序顺序非常重要,如下所示:
首先按Name执行升序排序,然后按Age升序排序(实际上在子字符串中更早),然后按Amt降序排序。就是这样。
我有这门课
public class ArrComparer : IComparer
{
public int Compare(object x, object y)
{
string left = x.ToString();
string right = y.ToString();
string lhs = left.Substring(3, 6);
string rhs = right.Substring(3, 6);
return lhs.CompareTo(rhs);
}
}
我使用它仅基于一个字段进行排序 - 通过调用命名
RecordList.Sort(new ArrComparer());
这让我可以根据该字段正确排序。问题是如何修改此代码以允许我根据所有三个AT ONCE以正确的顺序并使用正确的 asc/desc 模式进行排序?
任何代码或提示将不胜感激。(顺便说一句,如果您想知道List<T>
在这个项目中使用泛型不是一个选项)。