如何按enum绑定列表
本文关键字:列表 绑定 enum 何按 | 更新日期: 2023-09-27 18:17:47
我试图用枚举绑定列表。枚举有以下值
public enum Degree
{
Doctorate = 1,
Masters = 2,
Bachelors = 3,
Diploma = 4,
HighSchool = 5,
Others = 6
}
,列表是下面类
的类型class List1
{
public string Text{get; set;}
public string Value{get; set;}
}
如何映射?
这是一个很好很简单的LINQ解决方案:
var t = typeof(Degree);
var list = Enum.GetValues(t).Cast<int>().Zip(Enum.GetNames(t),
(value, name) => new List1{Text = name, Value = value.ToString()}
).ToList();
这显然也可以变成一个扩展方法。
更多信息请参见:
枚举。getvalue
枚举。getname
LINQ Enumerable.Zip
由于Zip
方法仅在。net 4.0中,这里有一个替代的3.0方法来实现它。
var t = typeof(Degree);
var list = Enum.GetValues(t).Cast<Degree>().Select(
value => new List1{ Text = value.ToString(), Value = ((int)value).ToString() }
).ToList();
如果你需要一个2.0的答案,看看@Dewasish的答案。
试试这个:
private List<SelectListItem> MapDegree()
{
var enumerationValues = Enum.GetValues(typeof(Degree));
var enumerationNames = Enum.GetNames(typeof(Degree));
List<List1> lists = new List<List1>();
foreach (var value in Enum.GetValues(typeof(Degree)))
{
List1 selectList = new List1
{
Text = value.ToString(),
Value = ((int)value).ToString(),
};
lists.Add(selectList);
}
return lists;
}
您可以创建一个实用程序函数来创建枚举的哈希表。
public static class EnumUtil<T>
{
public static Hashtable ToHashTable()
{
string[] names = Enum.GetNames(typeof(T));
Array values = Enum.GetValues(typeof(T));
Hashtable ht = new Hashtable();
for (int i = 0; i < names.Length; i++)
ht.Add(names[i], (int)values.GetValue(i));
return ht;
}
}
用法:
EnumUtil<Degree>.ToHashTable();