Это отчасти зависит от того, что вы хотите случиться, если столкнетесь с дубликатами. Например, вы можете сделать:
var result = dictionaries.SelectMany(dict => dict)
.ToDictionary(pair => pair.Key, pair => pair.Value);
Это взорвется, если вы получите дубликаты ключей.
РЕДАКТИРОВАТЬ: Если вы используете ToLookup, то вы получите поиск, который может иметь несколько значений на ключ. Вы можете преобразовать это в словарь:
var result = dictionaries.SelectMany(dict => dict)
.ToLookup(pair => pair.Key, pair => pair.Value)
.ToDictionary(group => group.Key, group => group.First());
Это немного уродливо - и неэффективно - но это самый быстрый способ сделать это с точки зрения кода. (Я не проверял это, по общему признанию.)
Конечно, вы можете написать свой собственный метод расширения ToDictionary2 (с лучшим именем, но сейчас у меня нет времени думать о нем) - это не так уж сложно сделать, просто перезаписывая (или игнорируя) дублирующиеся ключи. Важным моментом (на мой взгляд) является использование SelectMany и понимание того, что словарь поддерживает итерацию по его парам ключ / значение.