List <Dictionary> foreach获得价值

时间:2019-06-25 13:35:45

标签: c# asp.net dictionary

List<Dictionary<string, object>> data = new List<Dictionary<string, object>>();
Dictionary<string, Object> objs = new Dictionary<string, object>();
for (int i = 1; i <= onlineolanlar.Count; i++)
{
    objs.Add(i.ToString(), new userLevel() { UserID = userID.ToString(), Presence = UserLevelBul.ToString() });
}
foreach (var item5 in objs.Values)
{
    //How can I access item5 properties here??
}

大家好,

如何获得该foreach循环的值?

item5应该具有属性useriduserlevelbul,但我无法访问它们。

2 个答案:

答案 0 :(得分:7)

您将字典objs声明为Dictionary<string, object>。但实际上,您只想添加(并在以后使用)类型为userLevel的条目。

因此只需声明具有正确类型的字典即可:

Dictionary<string, userLevel> objs = new Dictionary<string, userLevel>();

然后您可以直接使用它:

foreach (var item5 in objs.Values)
{
     Console.WriteLine(item5.userID)
     Console.WriteLine(item5.Presence)
}

因为现在objs.Valuesitem5中的元素都是userLevel类型。

答案 1 :(得分:0)

在您的userLevel上使用Dictionary<string, Object>而不是Object,或者使用Explicit casting(如果您由于某些原因无法更改object):

foreach (var item5 in objs.Values)
{
     string userId = ((userLevel)item5).UserID;
     // or
     // string userId = (item5 as userLevel).UserID;
}