LinQ的关联查询:
var q =
(from ar in db.Articles
join c in db.Categories on ar.ParentId
equals c.Id
join sc in db.Categories on ar.SubId equals sc.Id into scate
from sc in scate.DefaultIfEmpty()
where ar.IsPrivate == false
orderby ar.CreateTime descending
__select new
{
article = ar,
pcate = c,
scate = sc
}).Take(3);
defaultifempty()方法就可以实现左连接,并且左右连接都是外连接的一种。
var result = from s in 集合或表
join t in 另一个集合或表 on s.id equals t.id into u
from v in u.defaultifempty()
select new { 需要的字段或值}。