我正在重构这样的代码:
var result = new SortedDictionary<int, string>();
foreach (var item in foo)
{
result[item.id] = item.name;
}
foreach (var item in bar)
{
result[item.id] = item.name;
}
return result;
我想写:
return foo.Concat(bar).ToSortedDictionary(i => i.id, i => i.name);
但我没有在Linq找到它?
答案 0 :(得分:1)
您可以使用return new SortedDictionary<T1, T2>(foo.Concat(bar).ToDictionary())
;或者你可以编写自己的扩展方法。
至于为什么它不存在,有很多类似的方法不存在 - 提供了基础知识以及你需要的其他任何你可以轻易制作的方法。
答案 1 :(得分:1)
第一个解决方案是准备Dictionary
并用作参数来创建SortedDictionary
:
return new SortedDictionary<T1, T2>(foo.Concat(bar).ToDictionary())
另一个选择是写一个像这样的扩展方法:
public static SortedDictionary<K, V> ToSortedDictionary<K,V>(this Dictionary<K, V> existing)
{
return new SortedDictionary<K, V>(existing);
}