我有enum
:
public enum Fruits
{
Apple = 14,
Lemon = 174,
Grapes = 200,
Peach = 1
}
以及此enum
的列表:
IEnumerable<Fruits> Fruits = new List<Fruits>();
默认情况下,当我在getValues
上调用enum
时,它会根据ID对这些条目进行排序。
我将列表显示为UI中的下拉列表,并希望按特定顺序对列表成员进行排序。在我的示例中,我希望Lemon
成为列表中的第一项。
我试图通过Lemon条目订购这些项目:
Fruits.OrderBy(f => f.Lemon);
但在此上下文中我不允许这样做f.Lemon
。也许我可以foreach
列表删除Lemon项目,然后将其作为第一个条目插入。
我对编程很陌生,我发现了一些类似的问题但不是enum
类型。
答案 0 :(得分:4)
您可以使用OrderByDescending
+ ThenBy
:
fruits.OrderByDescending(f => f == Fruits.Lemon)
.ThenBy(f => f);
请注意,变量的名称应与枚举类型不同(我使用的是小写fruits
)。
如果您想通过名称订购第二个:
.ThenBy(f => f.ToString());
f == Fruits.Lemon
会返回您可以订购的bool。它类似于SQL CASE
:
ORDER BY CASE WHEN Fruit = 'Lemon' THEN 1 ELSE 0 END DESC, FRUIT ASC