2012-05-26 21 views
2

條件總和我有2個表EF4組通過,並與導航

**table 1** 
int tid 
money money 
datetime date 
int serviceid 
int type 


**table2** 
int id 
int tid 
status nvarchr() 

我使用EF4。我有導航屬性到兩個實體

我試圖獲得通過日期金錢組的總和[我還做了一個新的類與此性質]

Total money 
Total money of type [1] 
total money where table2 status is a or b 

我如何能實現查詢 的國王這就是我所得到的結果:

return db.TBL1.Include("TBL2").Where(x => x.date >= startDate && x.date <= endDate && x.ServiceID == sid).GroupBy(e => new { e.Date.Value.Year, e.Date.Value.Month, e.Date.Value.Day }).AsEnumerable().Select(group => new entity c (Convert.ToInt32(group.Sum(x => x.Money)), Convert.ToInt32(group.Where(d => d.BillingType == 1).Sum(x => x.Money)),********what can i do here*****, Convert.ToDateTime(group.FirstOrDefault().Date))).AsEnumerable<billingReport>().ToList(); 

回答

0
return db.TBL1 
     .Where(x => x.date >= startDate && 
        x.date <= endDate && 
        x.ServiceID == sid) 
     .GroupBy(e => new 
     { 
      e.Date.Value.Year, 
      e.Date.Value.Month, 
      e.Date.Value.Day 
     }) 
     .Select(group => new billingReport 
     { 
      TotalMoney = Convert.ToInt32(group.Sum(x => x.Money), 
      TotalMoneyOfType1 = Convert.ToInt32(group.Where(d => d.BillingType == 1) 
                 .Sum(x => x.Money)), 
      TotalMoneyForStatus = group.Where(x=>x.TBL2.Any(y => y.Status == "a" || 
                    y.Status == "b")) 
             .Sum(x => x.Money), 
      Date = Convert.ToDateTime(group.FirstOrDefault().Date)) 
     }) 
     .ToList();