如何使用linq对列表对象进行基于枚举顺序的排序

oxcyiej7  于 2023-02-14  发布在  其他
关注(0)|答案(2)|浏览(160)

我想使用linq c# 6.0根据枚举名/值对列表进行排序
我的枚举将如下所示

public enum Number
{
    One,
    Two,
    Three,
    Four,
    Five            
}

未排序的我的列表

[
{
"a":ddd
"b":aaa
"w":"Four"
},
{
"a":sss
"b":fff
"w":"Two"
},
{
"a":bbbb
"b":zzzz
"w":"Three"
},
{
"a":hhh
"b":kkk
"w":"Five"
},{
"a":llll
"b"oooo
"w":"One"
},
]

我想通过Map属性“W”和枚举顺序对上面的列表进行排序,输出将是

[
{
"a":llll
"b"oooo
"w":"One"
},
{
"a":sss
"b":fff
"w":"Two"
}
....
]

尝试跟踪但没有成功

var a = myList.OrderBy(x => x.W).ToList();
wz1wpwve

wz1wpwve1#

试试这个:

// you need to convert your 'w' string to enum first, then sort
var a = myList.OrderBy(x => Enum.Parse((typeof(Number),x.W)).ToList();
ddrv8njm

ddrv8njm2#

您可以通过对枚举进行如下编号来“强制”特定的顺序

public enum Number
{
    One = 1,
    Two = 2,
    Three = 3,
    Four = 4,
    Five = 5
}

然后,当您排序时,它将按您指定的顺序。
(奇怪的是,对我来说,列表出现在正确的顺序,而不需要这个!)

相关问题