【发布时间】:2017-10-06 14:18:32
【问题描述】:
下面的代码总是按enum 的值排序,但我想按enum 中的位置排序。您注意到 Matchup 在 enum 中排在第三位,但值为 6。它总是以列表中的最后一个出现在迭代中。
foreach (var enumName in Enum.GetValues(enumType).Cast<TEnum>())
{
}
public enum RestrictionDetailType
{
[EnumMember(Value = "0"), Display(Name = "None")]
None = 0,
[EnumMember(Value = "1"), Display(Name = "Team")]
Team = 1,
[EnumMember(Value = "6"), Display(Name = "Matchup")]
Matchup = 6,
[EnumMember(Value = "2"), Display(Name = "Date/Time")]
DateTime = 2,
[EnumMember(Value = "3"), Display(Name = "Venue")]
VenueCourt = 3,
[EnumMember(Value = "4"), Display(Name = "Games")]
Games = 4,
[EnumMember(Value = "5"), Display(Name = "Exhibition")]
Exhibition = 5
}
【问题讨论】:
-
您可以按照您想要的任何顺序列出它们的数组并使用它来代替。
-
或者,创建一个新属性来存储显示顺序和枚举中的顺序。
-
@DiskJunky - 嗯?
GetValues()被记录为“按其无符号大小”排序返回它们 -
枚举的成员按索引排序。这就是枚举知道如何对其值进行排序的方式。如果您想以不同的方式对它们进行排序,那么您要么必须按所需顺序分配索引,要么按所需顺序将值添加到列表或数组中,然后改用该对象。
-
@Damien_The_Unbeliever,我的立场是正确的 - 很高兴知道!