[英]Sorting list in C#
我有一個自定義類型列表。 而自定義類型是
public class PossibleMatch
{
public PossibleMatch()
{
StoreIds = new List<long>();
OrderLineIds = new List<long>();
}
public IList<long> StoreIds { get; set; }
public IList<long> OrderLineIds { get; set; }
}
我必須以這樣的方式對列表進行排序,其中商店數量較少,訂單行數量應該在頂部。
提前致謝。
LINQ只有這方面的方法。
嘗試使用以下內容來匹配最少StoreIds的匹配,然后通過匹配最多OrderLineIds的子訂單進行排序:
var possibleMatches = new List<PossibleMatch>();
var ordered = possibleMatches.OrderBy(pm => pm.StoreIds.Count).ThenByDesc(pm => pm.OrderLineIds.Count);
或者通過匹配最多的OrderLineIds排序,然后通過與最少StoreIds匹配的子訂單排序:
var ordered = possibleMatches.OrderByDesc(pm => pm.OrderLineIds.Count).ThenBy(pm => pm.StoreIds.Count);
構建自定義比較器:
public class PossibleMatchComparer: IComparer<PossibleMatch>
{
public int Compare(PossibleMatch x, PossibleMatch y)
{
if (x.StoreIds.Count < y.StoreIds.Count) return -1;
if (x.StoreIds.Count > y.StoreIds.Count) return 1;
return y.OrderLineIds.Count - x.OrderLineIds.Count;
}
}
所以你可以使用:
list.Sort(new PossibleMatchComparer());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.