2015-06-22 42 views
0

我有一些linq返回給定年份的屬性列表和預訂數量。但是,如果某個屬性沒有預訂,那麼它不包含在結果集中。Linq - 結果中缺少0個條目的組計數

var bookings = from b in db.Bookings 
         orderby b.PropertyId 
         where b.StartDate.Year == Year 
         group b by b.Property.Title into grp 
         select new { key = grp.Key, cnt = grp.Count() }; 

這怎麼能改變,包括沒有預訂的屬性?

+0

這是Linq2SQL還是LINQ2Objects?在第一種情況下,where子句不適合,因爲當組中沒有任何項目時,應該如何進一步過濾? – HimBromBeere

回答

1

我假設有基於代碼中的屬性表。你需要從屬性中選擇:

var bookings = from p in db. Properties 
       orderby p.Id 
       group p by p.Title into grp 
       select new 
       { 
        key = grp.Key, 
        cnt = grp.Count(p => p.Bookings.Where(b => b.StartDate.Year == Year)) 
       }; 
1

我想你應該每年篩選的計數,然後

var bookings = from b in db.Bookings 
       orderby b.PropertyId 
       group b by b.Property.Title into grp 
       select new { 
        key = grp.Key, 
        cnt = grp.Count(x => x.StartDate.Year == Year) 
       };