我試圖搜索,但我似乎無法找到我的答案。我認爲答案可能存在,因爲這不是一個不常見的問題。我想說按Item1排序。如果它們相等,排序項目2Lambda表達式,比較item1,如果它們相等比較item2
sorted.Sort((a,b)=>(a.Item1.CompareTo(b.Item1)));
我試圖搜索,但我似乎無法找到我的答案。我認爲答案可能存在,因爲這不是一個不常見的問題。我想說按Item1排序。如果它們相等,排序項目2Lambda表達式,比較item1,如果它們相等比較item2
sorted.Sort((a,b)=>(a.Item1.CompareTo(b.Item1)));
當你可以建立一個比較器與List<T>.Sort
要做到這一點,它更容易使用LINQ,這是爲這樣的事情內置:
sorted = unsorted.OrderBy(x => x.Item1).ThenBy(x => x.Item2).ToList();
如果你真的想使用排序,你可以在我的MiscUtil項目中使用ProjectionEqualityComparer
- 但它不會像LINQ方法那麼好。
var sorted = original.OrderBy(c => c.Item1).ThenBy(n => n.Item2).ToList()
試試這個
作爲替代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());
[使用LINQ Multiple Order By](http:// stac koverflow.com/questions/2318885/multiple-order-by-with-linq) – JohnLBevan