我要这样订购数据:
通过一个名为“类型”的值对我的数据进行分组
我想按类型的特定顺序对组进行排序,例如: 我已经定义了顺序:TYPE1,TYPE3,TYPE4,TYPE2
现在我希望所有设置都像这样:
-前几行是TYPE1类型行,
-接下来的几行是TYPE3类型行,
.....
谁能告诉我如何实现这一目标?
答案 0 :(得分:2)
您已经提到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
中不存在某项,那么您会发现这些项按照它们在列表开头的接收顺序放置在一起。有解决此问题的方法,但我不清楚您是否会遇到。