Linq - присоединение путаницы - PullRequest
2 голосов
/ 09 ноября 2010

Ради этого вопроса давайте предположим, что у меня есть таблицы 'A' и 'B', и между ними есть соотношение 1: 1. В запросе Linq я могу сделать следующее:

from row in A
where row.B.Description = someValue
select A

Где row.B - ссылка на таблицу «B».

Однако, давайте теперь предположим, что существует отношение 1: M между «A» и «B». Вышеуказанный запрос больше не работает. Кажется, мне нужно явно использовать 'join' следующим образом:

from row in A
join row1 in B on row.BId = row1.BId
where row1.Description = someValue
select A

Мой вопрос такой. Верно ли, что для отношений 1: M требуется соединение? Или есть способ сделать этот запрос без использования соединения, как в случае 1: 1?

Ответы [ 3 ]

2 голосов
/ 09 ноября 2010

Вам не нужно явно присоединяться, выберите много, но в любом случае все получится

from row in A   
from row1 in row.B  
where row1.Description == someValue   
select row  

(хотя мне это действительно не нравится)

from row in A
where row.B.Any(b => b.Description == someValue)
select row

С первымвариант, вам нужно сделать Distinct () для результата, если есть много B, которые имеют одинаковое описание.

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

Теоретически, вы всегда должны использовать Join, если не что иное, как для ясности и читабельности.Но в любом случае 1: M вам необходимо указать, как таблицы связаны друг с другом.Точно так же, как в SQL.

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

Да, вам понадобится join.

взгляните на следующее.

http://blogs.msdn.com/b/charlie/archive/2007/02/20/one-to-many-and-joins.aspx

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