【发布时间】:2021-09-18 19:38:38
【问题描述】:
好吧,我放弃了。这可能是我想念的非常简单的事情,但在过去的 2 个小时里我一直被困在这个问题上,我在网上的任何地方都找不到答案。下面的代码在我的list 中的foreach 中显示了一个 CS1579 错误:
“foreach 语句无法对 'object' 类型的变量进行操作,因为 'object' 不包含 'GetEnumerator' 的公共定义”。
我的roomList[roomNameTest]不应该返回List<string>吗?
var roomList = new OrderedDictionary();
var listA = new List<string>();
listA.Add("elemA");
listA.Add("elemB");
roomList["roomA"] = listA;
var roomNameTest = "roomA";
if (roomList.Contains(roomNameTest))
{
var list = roomList[roomNameTest];
foreach (var item in list)
{
Console.WriteLine(item);
}
}
解决方案:
使用Dictionary<string, List<string>>() 效果非常好,我稍后根据需要使用OrderBy(x => x.Key) 对字典进行排序。感谢大家的贡献,非常感谢。
【问题讨论】:
-
OrderedDictionary不是泛型类,因此它仅适用于objects。您将需要转换或使用不同类型的集合。您真的需要订购吗? -
不,如果
roomList["roomA"]是object。 -
var list = (List<string>)roomList[roomNameTest];将修复它(在这种情况下) -
如果您想使用字典,为什么必须订购您的收藏?
-
如果您先使用
Dictionary<string, List<string>>,然后使用roomList.ContainsKey,则此代码可以正常工作。如果您真的需要坚持使用OrderedDictionary,我会感到惊讶
标签: c# dictionary ordereddictionary