#vb.net #linq-to-sql #union
#vb.net #linq-to-sql #объединение
Вопрос:
у меня проблема с объединением для LINQ to SQL
У меня есть мой запрос LINQ
Dim dc As New ContainerDB.DataClassesDataContext()
Dim test = (From container In dc.GetTable(Of tbl_container)() Where container.pkContainerID = iPkContainerID).Union( _
From containerHist In dc.GetTable(Of tbl_containerHIST)() Where containerHist.pkContainerID = iPkContainerID)
Я всегда получаю неявную ошибку преобразования
System.Linq.IQueryable (из ContainerDB.tbl_containerHIST) в системе.Коллекции.Общий.IEnumerable (из ContainerDB.tbl_container).
Что не так в этом запросе? Чего я не понимаю?
Заранее спасибо
Ответ №1:
Попробуйте поставить Option Infer On
. Это позволит использовать вывод типа, который вы, похоже, здесь делаете:
Dim test =
Редактировать
Кроме того, вам необходимо использовать анонимные типы:, чтобы можно было сравнивать tbl_container и tbl_containerHIST:
Dim test = (From container In dc.GetTable(Of tbl_container)()
Where container.pkContainerID = iPkContainerID
Select New With{ ... }).Union( _
From containerHist In dc.GetTable(Of tbl_containerHIST)()
Where containerHist.pkContainerID = iPkContainerID
Select New With{ ... })
Комментарии:
1. Привет, Rewinder, спасибо за ваш вклад. но это не работает. «System.Data.Linq. Запрос данных
1[ContainerDB.tbl_containerHIST]" cannot be convertered to Typ "System.Collections.Generic.IEnumerable
1[ContainerDB.tbl_container]».2. @SwissGuy: Похоже, проблема в том, что tbl_containerHIST и tbl_container — это два разных типа. Возврат объединения должен быть IEnumerable (Из ContainerDB.tbl_container). Возможно ли преобразовать tbl_containerHIST в tbl_container?
3. Привет, перемотчик, в cointainerHIST есть еще только 1 столбец для удаленных, обновленных. есть ли способ получить к этому доступ? та же ошибка для:
Dim test = (From container In dc.GetTable(Of tbl_container)() Where container.pkContainerID = iPkContainerID Select New With {.ContainerID = container.pkContainerID}).Union( _ From containerHist In dc.GetTable(Of tbl_containerHIST)() Where containerHist.pkContainerID = iPkContainerID Select New With {.ContainerID = containerHist.pkContainerID})
4. @SwissGuy: Ну, к нему можно получить доступ, но для успешного объединения все типы должны иметь одинаковые свойства / столбцы.