53

我的情景,

如何转换List<KeyValuePair<string, string>>IDictionary<string, string>

4

4 回答 4

96

使用 LINQ 非常非常简单:

IDictionary<string, string> dictionary =
    list.ToDictionary(pair => pair.Key, pair => pair.Value);

请注意,如果有任何重复的键,这将失败 - 我认为这可以吗?

于 2010-10-26T09:29:48.827 回答
8

或者你可以使用这个扩展方法来简化你的代码:

public static class Extensions
{
    public static IDictionary<TKey, TValue> ToDictionary<TKey, TValue>(
        this IEnumerable<KeyValuePair<TKey, TValue>> list)
    {
            return list.ToDictionary(x => x.Key, x => x.Value);
    } 
}
于 2014-05-30T11:58:36.613 回答
1

使用类ToDictionary()的扩展方法Enumerable

于 2010-10-26T09:30:20.543 回答
1

您还可以使用带有as 参数的构造函数重载。Dictionary<TKey,TValue>IEnumerable<KeyValuePair<TKey,TValue>>

var list = new List<KeyValuePair<int, string>>();
var dictionary = new Dictionary<int, string>(list);
于 2022-01-14T09:30:05.673 回答