Если вы включили using System.Linq;
и , оба анонимных типа имеют точно одинаковые имена свойств + типы свойств, то то, что вы сделали, должно работать.
Все же это не работает. Решение состоит в том, чтобы проверить свои анонимные типы на (а) незначительные различия в именах свойств и (b) незначительные различия в типах свойств .
например. даже int
против smallint
или double
или decimal
вызовет эту ошибку сборки:
'System.Collections.Generic.IEnumerable' не содержит определения для 'Union' и лучшей перегрузки метода расширения 'System.Linq.Queryable.Union (System.Linq.IQueryable, System.Collections.Generic.IEnumerable) 'имеет недопустимые аргументы
Переключение на .Concat()
не исправит это: оно имеет такое же (очевидное) ограничение, что типы с обеих сторон должны быть совместимы.
После того, как вы исправите проблему с именами или набором текста, я бы порекомендовал вам перейти на .Concat()
. Причина: .Union()
будет вызывать .Equals()
для всех объектов для устранения дубликатов, но это бессмысленно, потому что никакие два Анонимных Объекта, которые были созданы независимо, никогда не будут одним и тем же объектом (даже если их содержимое будет одинаковым).
Или, если вы хотели исключить дубликаты, вам нужно создать класс, содержащий ваши данные и реализующий .Equals()
способом, который имеет смысл.