1

我有一个enum

 public enum Fruits
    {
       Apple = 14,
       Lemon = 174,
       Grapes = 200,
       Peach = 1
    }

和一个清单enum

IEnumerable<Fruits> Fruits = new List<Fruits>();

默认情况下,当我调用它时getValuesenum它会按它们的 ID 对条目进行排序。我在 UI 中将列表显示为下拉列表,并希望按特定顺序对列表成员进行排序。在我的示例中,我想Lemon成为列表中的第一项。

我尝试通过 Lemon 条目来订购物品,如下所示:

Fruits.OrderBy(f => f.Lemon);

但我不允许f.Lemon在这种情况下这样做。也许我可以foreach在列表中删除 Lemon 项目,然后将其作为第一个条目插入。

我对编程很陌生,我发现了一些类似的问题,但不是enum类型。

4

1 回答 1

4

您可以使用OrderByDescending+ ThenBy

fruits.OrderByDescending(f => f == Fruits.Lemon)
      .ThenBy(f => f);

请注意,变量的名称应该与枚举类型不同(我使用了小写字母fruits)。

如果您想按名称订购第二个:

      .ThenBy(f => f.ToString());

f == Fruits.Lemon返回一个您可以订购的布尔值。它类似于 SQL CASE

ORDER BY CASE WHEN Fruit = 'Lemon' THEN 1 ELSE 0 END DESC, FRUIT ASC
于 2012-10-10T13:21:14.050 回答