2014-04-24 2 views
0
var query = from c in context.Auto 
      join r in context.Label on c.idAutoChar equals r.idAutoChar 
      join g in context.Rent on c.idAuto equals g.idAuto 
      where c.idAutoChar == r.idAutoChar && c.idAuto == g.idAuto 
      group new {c, r, g} by new {c.idAuto, r.Name, c.RegNumber, g.Summ} into v 
      select new 
      { 
       v.Key.idAuto, 
       v.Key.Name, 
       v.Key.RegNumber, 
       Sum = (from b in v select v.Key.Summ).Sum() 
      }; 

idAuto로 SUM (Summ) 열을 그룹화해야하지만 올바르게 작동하지 않습니다. 도와 주실 수 있겠습니까?Linq 그레이브 그룹 id

답변

0

g.Summum은 합계를하려는 숫자 값이고 실제로 그룹화 할 항목이 아니라고 가정하면 키의 일부가되어서는 안됩니다.

나는이 테스트의 방법을했습니다,하지만 이런 일이 해답이 될 수 있습니다

c in context.Auto 
        join r in context.Label on c.idAutoChar equals r.idAutoChar 
        join g in context.Rent on c.idAuto equals g.idAuto 
        where c.idAutoChar == r.idAutoChar && c.idAuto == g.idAuto 
        group new {c, r, g} by new {c.idAuto, r.Name, c.RegNumber} into v 
        select new 
        { 
         v.Key.idAuto, 
         v.Key.Name, 
         v.Key.RegNumber, 
         Sum = (from b in v 
              select b.Summ).Sum() 
        }; 

주 우리에 의해 그룹에 c.Summ을 포함하지 않으며, 합계 (B)를 통해 다음입니다 . 음. 나는 또한 g (Rent?)가이 linq 문에서 실제로 필요하지 않다고 생각한다.

+0

을 조인의 on 조건을 복제'Sum' 키 선택기를 받아, 그래서 좀 더 읽을 대신'(B에서 V IN의 사용하는 것 b.Summ을 선택하십시오)'부분. – BartoszKP

+0

감사합니다. 너 내가 도와 줬어. 하지만 그냥 다음과 같아야합니다. 합계 = (v에서 b에서 b.g.Summ 선택) .Sum() – user3568230

1
var query = from c in context.Auto 
       join r in context.Label on c.idAutoChar equals r.idAutoChar 
       join g in context.Rent on c.idAuto equals g.idAuto 
       //where c.idAutoChar == r.idAutoChar && c.idAuto == g.idAuto //??? 
       group new {c, r, g} by new {c.idAuto, r.Name, c.RegNumber} into v 
         select new 
         { 
          v.Key.idAuto, 
          v.Key.Name, 
          v.Key.RegNumber, 
          Sum = v.Sum(item => item.Key.Summ) 
         }; 

사용 Sum = v.Sum(item => item.Key.Summ)하고, 그렇지 않으면 각기 다른 Summ 값 그룹 항목을 생성합니다, Summ으로 그룹을하지 않습니다. BTW

, 왜 당신이 당신의 where 조건이 필요합니까 - 그것은 당신이

+0

b.Key와 "합계"방법이 없습니다. 하지만 고마워요 – user3568230

+0

예, 용서해주세요. 오타입니다. – Andrew

+0

@BartoszKP 네, Sum = (b에서 b.b.Summ을 선택하십시오.) Sum() – user3568230