鉴于C# 中不可用,如何将 a 转换KeyValuePair
为 a ?Dictionary
ToDictionary
问问题
77547 次
6 回答
153
var dictionary = new Dictionary<string, object> { { kvp.Key, kvp.Value } };
ToDictionary
在 C#中确实存在(编辑:与ToDictionary
您想的不一样)并且可以像这样使用:
var list = new List<KeyValuePair<string, object>>{kvp};
var dictionary = list.ToDictionary(x => x.Key, x => x.Value);
这里list
可以是List
任何IEnumerable
东西。第一个 lambda 显示如何从列表项中提取键,第二个显示如何提取值。在这种情况下,它们都是微不足道的。
于 2013-09-23T09:11:43.480 回答
7
如果我理解正确,您可以按以下方式进行:
new[] { keyValuePair }.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
于 2013-09-23T09:12:00.940 回答
1
创建KeyValuePair的集合并确保在using
语句中导入 System.Linq。
然后你就可以看到了。ToDictionary()扩展方法。
public IList<KeyValuePair<string, object>> MyDictionary { get; set; }
于 2013-09-23T09:09:15.670 回答
1
或者(如果你不能使用 Linq.. 虽然我很好奇为什么..)..ToDictionary
自己实现......
public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector) {
if (source == null)
{
throw new ArgumentNullException("source");
}
if (keySelector == null) {
throw new ArgumentNullException("keySelector");
}
if (elementSelector == null) {
throw new ArgumentNullException("elementSelector");
}
var dictionary = new Dictionary<TKey, TElement>();
foreach (TSource current in source) {
dictionary.Add(keySelector(current), elementSelector(current));
}
return dictionary;
}
示例用法:
var kvpList = new List<KeyValuePair<int, string>>(){
new KeyValuePair<int, string>(1, "Item 1"),
new KeyValuePair<int, string>(2, "Item 2"),
};
var dict = ToDictionary(kvpList, x => x.Key, x => x.Value);
于 2013-09-23T09:16:48.883 回答
1
使用 System.Linq.Enumerable.ToDictionary() 扩展方法来转换一个或多个 KeyValuePairs 的集合
Dictionary<string,string> result = new[] {
new KeyValuePair ("Key1", "Value1"),
new KeyValuePair ("Key2", "Value2")
}.ToDictionary(pair => pair.Key, pair => pair.Value);
于 2020-07-23T15:52:52.220 回答
0
自己实现它作为扩展方法。
public static class MyExtensions
{
public static Dictionary<T1,T2> ToDictionary<T1, T2>(this KeyValuePair<T1, T2> kvp)
{
var dict = new Dictionary<T1, T2>();
dict.Add(kvp.Key, kvp.Value);
return dict;
}
}
看到这个在行动:https ://dotnetfiddle.net/Ka54t7
于 2013-09-23T09:11:31.953 回答