我对 C# 很陌生,并且遇到了集合问题。我有一些值的字典说:[(5,“abc”),(6,“def”)]。我调用一个方法并得到一个类似的列表:{“mno”,“pqr”}。现在我想用列表的内容更新字典的值。问题是地图的键可以从任何数字开始,比如从 5。但是新列表的起始索引将像往常一样始终为 0,列表和地图的长度相同......所以我可以不是这样:map[i] = list[i],因为它们不匹配。有人可以告诉我如何用列表的内容替换字典的内容吗?拜托拜托!!!
问问题
79 次
2 回答
1
简单的 For 循环
for (int index = 0; index < map.Count; index++)
{
map[map.ElementAt(index).Key] = list[index];
}
使用 Linq
var result = map.Zip(list, (m, l) => new { Key = m.Key, Value = l })
.ToDictionary(p => p.Key, p => p.Value);
于 2013-07-27T03:19:46.620 回答
0
这是一个使用 LINQ 的方法,它将使用Dictionary
与旧字典相同的键创建一个新字典,但值来自列表:
map = map.Keys
.OrderBy(k => k)
.Zip(list, (k, v) => new KeyValuePair<int, string>(k, v))
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
如果您需要更新原始Dictionary
文件而不是创建新文件,可以这样做:
foreach (var kvp in map.Keys
.OrderBy(k => k)
.Zip(list, (k, v) => new KeyValuePair<int, string>(k, v)))
map[kvp.Key] = kvp.Value;
于 2013-07-27T03:28:10.300 回答