Linq Query Help - PullRequest
       1

Linq Query Help

0 голосов
/ 07 ноября 2010

У меня следующий запрос Linq:

from etamodule in ETAModule
join eta in ETA on etamodule.ExpID equals eta.ExpID
where etamodule.SubID==  "101106261013"
select new { etamodule }

ETAModule имеет отношение 1: 1 к ETA.Однако в базе данных нет FK, который обеспечивает это (к сожалению).Способ построения моего запроса работает нормально, но я бы хотел включить сущность ETA для каждой сущности ETAModule в качестве свойства сущности ETAModule.Конечно, это было бы намного проще, если бы существовал ФК.Как я могу изменить свой запрос, чтобы сделать это?

Спасибо.

1 Ответ

1 голос
/ 07 ноября 2010

Вы можете легко включить eta в окончательную проекцию, добавив ее к анонимному типу:

from etamodule in ETAModule
join eta in ETA on etamodule.ExpID equals eta.ExpID
where etamodule.SubID==  "101106261013"
select new { etamodule, eta }

Если вы хотите, чтобы eta было свойством etamodule, вам нужно определить класс с таким свойством, например, ModuleWithETA. Затем вы можете проецировать следующее:

...
select new ModuleWithEta
{
  ID = etamodule.ID,
  Name = etamodule.Name,
  ...
  ETA = eta
}

Если вам нужен эквивалент левого внешнего соединения (включая все этамодули, независимо от того, имеют ли они ETA), измените запрос следующим образом:

from etamodule in ETAModule
where etamodule.SubID = "..."
select new
{
  etamodule,
  eta = ETA.FirstOrDefault (e => e.ExpID == etamodule.ExpID)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...