为列表中的项目分配ID

时间:2013-12-03 18:55:13

标签: c#

我有三个名为dynamicTextEnumsInDatabasedynamicTextEnumsAlldynamicTextEnumsAvaiable的列表。

我正在尝试根据可以在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");
}

谢谢! :)

2 个答案:

答案 0 :(得分:0)

您从dynamicTextEnumsAll显示的数字只是List中项目的从0开始的索引位置,与枚举的基础整数值无关。

要获取基础整数值,可以转换回int。

例如,您指出DynamicTextEnum.Agreement在列表中的位置0,因此以下内容应返回1:

var underlyingEnumValue = (int)dynamicTextEnumsAll[0];

答案 1 :(得分:0)

解决了我的问题。我刚刚创建了一个类,用于从数据库返回的记录,然后将它们转换为枚举。

相关问题