Linq中有ToSortedDictionary吗?

时间:2018-02-22 15:43:11

标签: c# linq

我正在重构这样的代码:

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找到它?

2 个答案:

答案 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);
}