集合的自定义排序

本文关键字:排序 自定义 集合 | 更新日期: 2023-09-27 18:10:26

我有一个对象集合。我需要根据困难条件对它进行排序,使用许多性质和计算。我的解决方案是在对象中定义特殊的int属性,它返回OrderBy应该排序的值。这个解决方案不够好。
对于示例,收集应先按State属性排序,如果是State = 1,则按Value1属性排序,如果是State = 2,则按Value2属性依次排序。

集合的自定义排序

您可以通过对第一个条件使用OrderBy并在其后使用ThenBy将其他条件链接起来,从而按多个条件排序一个集合。

你的第一个标准是按国家财产简单订购。你的第二个标准取决于国家财产;假设Value1、Value2等具有相同的类型,您可以使用switch语句来选择正确的值:

IEnumerable<MyClass> result = items
    .OrderBy(item => item.State)
    .ThenBy(item =>
    {
        switch (item.State)
        {
            case 1: return item.Value1;
            case 2: return item.Value2;
        }
        throw new Exception();
    });

使用LINQ的order实现比较器

你可以使用IComparer类;
只需将上面给出的所有逻辑放入其比较方法中。