簡體   English   中英

C#中的排序列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM