将列表的内容复制到Dictionary <int,string =“”> </int,>

时间:2013-07-27 03:01:50

标签: c#-4.0

我对C#很陌生,并且遇到了收藏问题。我有一些词汇,有些价值说:[(5,“abc”),(6,“def”)]。我调用一个方法并获得一个List,如:{“mno”,“pqr”}。现在我想用列表的内容更新字典的值。问题是地图的关键可以从任何数字开始,比如从5开始。但是新列表的起始索引将一如既往地为0,列表和地图的长度都相同...所以我可以所以:map [i] = list [i],因为它们不匹配。有人可以告诉我如何用列表的内容替换字典的内容?拜托!!!

2 个答案:

答案 0 :(得分:1)

简单循环

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);

答案 1 :(得分: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; ,则可以执行此操作:

{{1}}