5

カスタムタイプのリストがあります。カスタムタイプは

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; }
    }

店舗の数が少なく、注文行の数が多いアイテムが一番上になるように、リストを並べ替える必要があります。

前もって感謝します。

4

2 に答える 2

8

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);
于 2012-11-02T11:39:32.253 に答える
4

カスタム比較ツールをビルドします。

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());
于 2012-11-02T11:44:29.057 に答える