Это лучшее, что я мог произвести:
public static IDictionary<TKey, TValue> ToDictionary<TKey, TValue>(IEnumerable<KeyValuePair<TKey, TValue>> keyValuePairs)
{
var dict = new Dictionary<TKey, TValue>();
var dictAsIDictionary = (IDictionary<TKey, TValue>) dict;
foreach (var property in keyValuePairs)
{
(dictAsIDictionary).Add(property);
}
return dict;
}
Я сравнил скорость преобразования IEnumerable из 20 миллионов пар ключ-значение в словарь с использованием Linq.ToDictionary со скоростью этого. Этот работал в 80% случаев версии Linq. Так что быстрее, но не намного. Я думаю, вам действительно нужно оценить экономию в 20%, чтобы она того стоила.