我想执行左连接,它将像在sql server / mysql中工作一样工作 .
例如:mysql:table a LEFT outer JOIN tableb ON b.AId = a.bId
linq:
from b in ctx.tableb.DefaultIfEmpty()
我想也许在条件中加上这个:
b.Aid = a.bId
但是它会像普通的内部联接一样返回结果 .
如果尝试没有它,那么在结果中我得到表b中的所有行,结果为(重复结果) .
我希望它像常规左连接一样从表A返回行:
“LEFT JOIN关键字返回左表(table1)中的所有行,右表(table2)中的匹配行 . 当没有匹配时,结果在右侧为NULL”
有一种方法,查询将像在mysql中一样?
如果我做的很明显,问题解决了,但我不认为这是方式..
谢谢 .
2 回答
从How to perform Left Outer Join with LINQ,您可以使您的查询看起来像:
注意,如果你使用select like
,并且稍后引用选择行中的列,对于来自
ba
的任何行,您将获得NullReferenceException
为空(如果您的单列中只有一个空列,则会得到一个空行) .从表a中将表b中的b连接到等于b.Owner到gj中的g在gj.DefaultIfEmpty()中选择new {a.FirstName,PetName =(c == null?String.Empty:c.Name)};