Используйте оператор Cast
:
IQueryable<ItemBase> folderItems = contractItems
.Cast<ItemBase>()
.Concat(changeOrderItems.Cast<ItemBase>());
Ответ на другой вопрос работает для LINQ to Objects, но не обязательно для LINQ to Entities или LINQ to SQL.
Кроме того, вы можете преобразовать в LINQ to Objects, вызвав AsEnumerable
:
IQueryable<ItemBase> folderItems = contractItems
.AsEnumerable()
.Concat<ItemBase>(changeOrderItems);
Однако будьте осторожны в LINQ to Objects; Concat
будет работать без каких-либо накладных расходов (итерируя по обеим коллекциям из базы данных), но Union
будет полностью извлекать одну из коллекций из базы данных, а затем перебирать другую.