したがって、カスタム要件を使用して IEnumerable を注文したいと考えています。基本的にはDocumentIdで注文したいのですが、少しうるさい/特定なので、そのように注文する必要があります..
1st = ID 3
2nd = ID 5
3rd = ID 2
4th = ID 4
5th = ID 6
これは、これらの ID が事前定義された画像と一致し、画像をこの順序で表示する必要があるためです。
誰かがこれを行う方法を考えてください。
次のアプローチを使用できます。
int[] orderedIds = { 3, 5, 2, 4, 6 }
var result = enumerable.OrderBy(x => Array.IndexOf(orderedIds, x.Id));
orderedIds
これは、可能なすべての IDが all に含まれていることを前提としています。そうでない場合、この方法では ID が不明なアイテムが他のすべてのアイテムより先にソートされます。ほとんどの場合、これはあなたが望むものではないので、このシナリオでは、次のようなものを使用したいと思うかもしれません:
var result =
enumerable.Select(x => new { Item = x,
Index = Array.IndexOf(orderedIds, x.Id) })
.OrderByDescending(x => x.Index != -1)
.ThenBy(x => x.Index == -1 ? x.Item.Id : x.Index)
.Select(x => x.Item);
これにより、ID が不明なアイテムが結果の最後に配置され、ID 順に並べられます。