Linq-запрос возвращает только 1 строку - PullRequest
1 голос
/ 23 мая 2011
Dim ds = From a In db.Model
           Join b In db.1 On a.id Equals b.ID
           Join c In db.2 On a.id Equals c.ID
           Join d In db.3 On a.id Equals d.ID
           Join f In db.4 On a.id Equals f.ID
   Select a.id, a.Ref, a.Type, a.etc

Выше мой запрос linq.В настоящее время я получаю только первый ряд из базы данных, возвращенный, когда в настоящее время существует 60 строк.Подскажите, пожалуйста, где я ошибаюсь и как выбрать все записи.

Заранее спасибо!

ОБНОВЛЕНИЕ:

Когда я вынимаю все объединения вот так:

 Dim ds = From a In db.1, b In db.2, c In db.3, d In db.4, f In db.5
Select a.id, a.Ref, a.type, b.etc, c.etc, d.etc

Я получаю исключение system.outofmemory!

1 Ответ

2 голосов
/ 23 мая 2011

Вы получите строку, только когда все объединений совпадут - другими словами, когда есть строка из Model с AP, Option, Talk и Invoice , Я думаю, что есть только один из них.

LINQ выполняет внутреннее соединение по умолчанию. Если вы ищете левое внешнее объединение (то есть там, где в отдельной строке может не быть счета-фактуры или разговора и т. Д.), Вам необходимо использовать групповое объединение, обычно в сочетании с DefaultIfEmpty.

Я не особо разбираюсь в синтаксисе VB, но эта статья выглядит так, как будто вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...