LINQ对结果进行分组,并按特定顺序对其进行排序



我想这样订购我的数据:

  1. 用一个称为";类型";

  2. 我想按类型的特定顺序对组进行排序,例如:我已经定义了订单:TYPE1,TYPE3,TYPE4,TYPE2

    现在我想所有的设置看起来像这样:

    -前几行是TYPE1类型的行,

    -接下来的几行是TYPE3类型的行,

有人能告诉我如何做到这一点吗?

您已经提到Type是一个枚举。我可以看到两个简单的选项来订购这个,1。更改枚举成员的值,或者,2。使用自定义排序。

解决方案1-更改枚举成员值

这很简单,但可能不符合您的要求(即枚举值可能在其他地方指定或需要硬编码值(。

按所需顺序将枚举成员的值更改为固定值:

public enumeration YourEnumName {
TYPE1 = 1,
TYPE3 = 2,
TYPE4 = 3,
TYPE2 = 4
}

解决方案2-使用自定义列表进行订购

进行订购时,创建一个列表来指定您想要的订单:

YourEnum[] orderList = new [] { YourEnum.TYPE1, YourEnum.TYPE3, YourEnum.TYPE4, YourEnum.TYPE2 };
var result = yourData.OrderBy(x => orderList.IndexOf(x.Type));

第二种解决方案的局限性在于,如果orderList中不存在一个项目,那么您会发现这些项目是按照列表开始时收到的顺序放在一起的。这个问题有解决方案,但我不清楚你是否会经历它

相关内容

  • 没有找到相关文章

最新更新