我试图搜索,但似乎无法找到答案。我认为答案可能存在,因为这不是一个不常见的问题。我想说按Item1排序。如果它们相等,则按Item2排序
sorted.Sort((a,b)=>(a.Item1.CompareTo(b.Item1)));
答案 0 :(得分:2)
虽然可以构建一个比较器来与List<T>.Sort
一起使用,但使用LINQ会更容易,而LINQ是为这类事情而构建的:
sorted = unsorted.OrderBy(x => x.Item1).ThenBy(x => x.Item2).ToList();
如果你真的想使用Sort,你可以在MiscUtil项目中使用ProjectionEqualityComparer
- 但它不会像LINQ方法一样好。
答案 1 :(得分:1)
var sorted = original.OrderBy(c => c.Item1).ThenBy(n => n.Item2).ToList()
试试这个
答案 2 :(得分:0)
作为LINQ方法的替代方法,您可以创建一个比较器:
class FrobComparer : IComparer<Frob>
{
public int Compare(Frob x, Frob y)
{
int item1Comparison = x.Item1.CompareTo(y.Item1);
if (item1Comparison == 0)
return x.Item2.CompareTo(y.Item2);
return item1Comparison;
}
}
然后将其传递到Sort()
,假设unsorted
是List<Frob>
:
var sorted = unsorted.Sort(new FrobComparer());