2012-05-26 4 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 

, как я могу достичь этого короля запроса ЭТО ТО, ЧТО Я ПОЛУЧИЛ SO FAR:

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(); 
Смежные вопросы