Linq join - 检查连接表

时间:2015-10-14 17:28:05

标签: c# linq

我的链接查询

 var q = from l in db.Locations

         select new LocationWrap {
                        Location = l

每个位置返回一行

直到我添加:

 var q = from l in db.Locations

         join lcl in db.Location_Catering_Links on l.ID equals lcl.LID into catering from lcl in catering.DefaultIfEmpty()    

         select new LocationWrap {
                        Location = l,
                        hasCatering = (lcl != null)

然后返回许多位置记录(尽可能多)。我相信它可能正在做一个左外连接,当我需要的是一个是否有任何餐饮记录的布尔值。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

var q = from l in db.Locations
        select new LocationWrap 
        {
            Location = l,
            hasCatering = db.Location_Catering_Links.Any(x => x.ID==l.ID)
        };

所以不需要加入。

答案 1 :(得分:0)

假设您的位置实体中有Location_Catering_Links导航属性,则可以执行以下操作:

var q = from l in db.Locations
        select new LocationWrap
               {
                   Location = l,
                   hasCatering = l.Location_Catering_Links.Any()
               };