为了这个问题,让我们假设我有表'A'和'B',它们之间有1:1的关系。在Linq查询中,我可以执行以下操作:
from row in A
where row.B.Description = someValue
select A
其中row.B是对表'B'的引用。
但是,我们现在假设'A'和'B'之间存在1:M的关系。以上查询不再有效。我似乎需要明确地使用'join',如下所示:
from row in A
join row1 in B on row.BId = row1.BId
where row1.Description = someValue
select A
我的问题是这个。我是否认为对于1:M关系,需要“加入”?或者是否有办法进行此查询,而不使用连接,如1:1的情况?
答案 0 :(得分:2)
你不必明确加入,选择很多会做的伎俩
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
对于第一个选项,如果有许多具有相同描述的B,则需要对结果执行Distinct()。
答案 1 :(得分:0)
答案 2 :(得分:0)
理论上,为了清晰和可读性,你应该总是使用Join,如果没有别的话。但在任何1:M的情况下,您需要指定表格如何相互关联。正如您在SQL中所做的那样。