我有两张桌子。父表只有一个日期列,子表有2个日期列(从/到)。我需要从父级到子级左连接,其中父级的日期列在子级中的一个之间。在sql中,它看起来像这样:

select p.cob, count(*) from parent p
left join child c on p.cob between c.effective and c.expiry
group by p.cob

一个人如何用linq写这个-我有点卡在这里...。

最佳答案

这应该是您要寻找的

var query = from p in context.Parent
            from c in context.Child.Where(x => p.cob >= x.effective)
                                   .Where(x => p.cob <= x.expiry)
                                   .DefaultIfEmpty()
            group p by p.cob into pg
            select new
            {
              cob = pg.Key,
              count = pg.Count()
            };

09-10 03:24