1

我需要按逻辑顺序表示不同类型的文档。所以我有一个带有 ID 的对象列表。我需要制作一个比较器,通过“手动”规则对这些对象进行排序。Order by id 必须是 2,32,5,12,8,43... 等等。

我使用 LINQ

documents.OrderBy(doc=> doc.Id, new DocumentsComparer<int>());

public class DocumentsComparer<T> : IComparer<int>
{
    ...???...
}

如何制作这样的比较器?

4

1 回答 1

2
public class DocumentsComparer<T> : IComparer<int>
{
    private List<int> order = new List<int>{2, 32, 5, 12, 8, 43};
    public int Compare(int x, int y)
    {
        return order.IndexOf(x).CompareTo(order.IndexOf(y));
    }
}

如果 x 和 y 可能不在您的已知列表中,则您必须为此添加检查并处理这些情况。

于 2011-06-16T12:56:36.350 回答