【问题标题】:Assign item in list an ID为列表中的项目分配 ID
【发布时间】:2013-12-06 23:38:45
【问题描述】:

我有三个名为dynamicTextEnumsInDatabasedynamicTextEnumsAlldynamicTextEnumsAvaiable 的列表。

我正在尝试根据可以在我的DynamicTextEnum 类中使用的所有可能的枚举将项目添加到dynamicTextEnumsAll 列表中。我可以添加所有这些,但是数字不匹配。例如在课堂上,EnumMembers 从 1 开始,而列表从 0 开始。

在我的DynamicTextEnum 班级中,我有以下成员:

    [EnumMember]
    Agreement = 1,

    [EnumMember]
    Warning = 2,

    [EnumMember]
    Reminder = 3

但是在dynamicTextEnumsAll 列表中,它们显示为:

Agreement = 0, Warning = 1, Reminder = 2

在下面的代码中,我可以在添加它们时为它们分配值。我已经尝试过使用 counter 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");
}

谢谢! :)

【问题讨论】:

    标签: c#


    【解决方案1】:

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

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

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

    var underlyingEnumValue = (int)dynamicTextEnumsAll[0];
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-25
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        相关资源
        最近更新 更多