我正在使用visual studio 2013并从Enum值绑定asp.net下拉控件
我有这个枚举。
enum Name
{
Kumar = 1,
Raju = 2,
Anil = 3,
Suresh = 4,
Bhaskar = 5,
};
现在我在枚举 Chandra = 6 中添加了一个值,但是当我绑定下拉列表并且无法更新时,我希望 Bhaskar = 5 应该处于最后位置枚举序列。
我希望此类型的结果显示在下拉列表中。
Kumar
Raju
Anil
Suresh
Chandra
Bhaskar
这就是我目前填充下拉列表的方式:
Array itemValues = System.Enum.GetValues(typeof(Name));
Array itemNames = System.Enum.GetNames(typeof(Name));
for (int i = 0; i <= itemNames.Length - 1 ; i++)
{
ListItem item = new ListItem(itemNames[i], itemValues[i]);
dropdownlist.Items.Add(item);
}
答案 0 :(得分:2)
您可以使用LINQ OrderBy()
进行自定义排序,如下所示:
var itemNames = System.Enum.GetNames(typeof(Name)).OrderBy(o => o == "Bhaskar" ? 1 : 0);
这种方式'Bhaskar'
应该是itemNames
中的最后一项以及枚举定义中排序的其他枚举值。
演示:(请参阅RVM wrappers)
enum Name
{
Kumar = 1,
Raju = 2,
Anil = 3,
Suresh = 4,
Bhaskar = 5,
Chandra = 6
};
public static void Main()
{
var itemNames = System.Enum.GetNames(typeof(Name))
.OrderBy(o => (string)o == "Bhaskar" ? 1 : 0)
.ToArray();
for (int i = 0; i <= itemNames.Length - 1 ; i++)
{
Console.WriteLine((string)itemNames[i]);
}
}
输出
Kumar
Raju
Anil
Suresh
Chandra
Bhaskar