我有三个名为dynamicTextEnumsInDatabase
,dynamicTextEnumsAll
和dynamicTextEnumsAvaiable
的列表。
我正在尝试根据可以在dynamicTextEnumsAll
课程中使用的所有可能的枚举将项目添加到DynamicTextEnum
列表中。我可以添加所有这些,但数字不匹配。例如,在类中,EnumMembers
从1开始,而列表从0开始。
在我的DynamicTextEnum
课程中,我有以下成员:
[EnumMember]
Agreement = 1,
[EnumMember]
Warning = 2,
[EnumMember]
Reminder = 3
但是在dynamicTextEnumsAll
列表中,它们显示为:
Agreement = 0, Warning = 1, Reminder = 2
在下面的代码中,我可以在添加它们时为它们分配值。我已经尝试过使用计数器int并以这种方式分配它们:
dynamicTextEnumsAll.Add(item[counter]);
List<DynamicTextEnum> dynamicTextEnumsInDatabase = new List<DynamicTextEnum>();
List<DynamicTextEnum> dynamicTextEnumsAll = new List<DynamicTextEnum>();
foreach (DynamicTextEnum item in Enum.GetValues(typeof(DynamicTextEnum)))
{
dynamicTextEnumsAll.Add(item);
}
using (var proxy = new Proxy<IDynamicText>())
{
dynamicTextEnumsInDatabase = proxy.Channel.DynamicTextGetActiveEnums(Helper.GetCallingUser());
}
List<DynamicTextEnum> dynamicTextEnumsAvaiable = dynamicTextEnumsAll.Except(dynamicTextEnumsInDatabase).ToList();
if (dynamicTextEnumsAvaiable.Count == 0)
{
TempData["Error"] = "To update a message or warning please select it from the grid below.";
return RedirectToAction("Index");
}
谢谢! :)
答案 0 :(得分:0)
您从dynamicTextEnumsAll
显示的数字只是List
中项目的从0开始的索引位置,与枚举的基础整数值无关。
要获取基础整数值,可以转换回int。
例如,您指出DynamicTextEnum.Agreement在列表中的位置0,因此以下内容应返回1:
var underlyingEnumValue = (int)dynamicTextEnumsAll[0];
答案 1 :(得分:0)
解决了我的问题。我刚刚创建了一个类,用于从数据库返回的记录,然后将它们转换为枚举。