2013-01-02 3 views
3

내가 가진 내가 변환 할 다음과 같은 SQL, 나는 LINQ 지금 무엇을 가지고는 아무튼에 의해 LINQ에 가입 SQL, 그룹 별 및

SELECT Contrato.finca, SUM(Pago.Importe_subtotal) 
FROM Pago, Contrato 
WHERE Pago.Contrato = Contrato.ID AND Pago.pagado = 1 
GROUP BY Contrato.finca 
ORDER BY 2 DESC 
GO 

은 다음과 같다 LINQ 할 수 있지만, 그룹을 변환 일하지 마라.

var x = from contrato in ctx.Contratos 
     join pago in ctx.Pagos 
     on contrato.ID equals pago.Contrato 
     where pago.pagado == true 
     group contrato by contrato.finca 
     select contrato.Finca1; 
+0

Linq를 사용시 가입에 대한 필요성이 있는가? 엔티티 모델이 올바르게 설정되면 관련 엔티티는 속성이어야합니다. 데이터베이스 스키마는 어떤 모습입니까? – Slick86

+0

작동하지 않습니다 ... _what_가 작동하지 않습니까? –

+0

재산입니다. Finca1에 있습니다. – xexe1982

답변

3

이 작동합니다 생각하십시오 :

ctx.Pagos.Where(m=>m.pagado==true).GroupBy(m=>m.Contrato.finca) 
    .Select(m=> new { Id= m.Key, Val= m.Sum(n => n.Importe_subtotal)}) 
+0

합계를 닫기 위해 ")"를 추가했습니다. 이 구문은 완전히 새로운 것입니다. 그것을 사용하는 방법에 대한 링크가 있습니까? System.Linq.Enumerable.Join (System.Collections.Generic.IEnumerable , System.Collections.Generic.IEnumerable , System.Func '메서드의 형식 인수 : 나는 다음과 같은 오류가 발생합니다 , System.Func , System.Func ) '을 사용에서 유추 할 수 없습니다. 형식 인수를 명시 적으로 지정하십시오. – xexe1982

+0

이것은 메소드 구문입니다. 나는 그것을 읽는 것이 훨씬 쉽다고 생각한다. http://msdn.microsoft.com/en-us/library/bb669071.aspx – Slick86

+0

다시 시도해 보자. pago join 속성이 올바르지 않았다. – Slick86

2

var x = from contrato in ctx.Contratos 
     join pago in ctx.Pagos 
     on contrato.ID equals pago.Contrato 
     where pago.pagado == true 
     group new {contrato, pago} by contrato.finca into g 
     select new { 
      key = g.Key, 
      sum = g.Sum(p => p.pago.Importe_subtotal) 
     }; 
+0

:.. 오류 'System.Linq.IGrouping ' 'Finca1'에 대한 정의를 포함하지 않으며, 확장 방법 없음 'Finca1'- intelisence에 속성이 없음을 나타내는 – xexe1982

+0

코드를 업데이트했습니다. 다시 시도하십시오. –

+0

Finc에 있음 내가 핑카 1을 넣는 이유는 무엇입니까?하지만 핀카 (핀카)도 보았습니다. 나는 당신의 모델 타입을 모른다. 나는 당신의 코드에서 본 것에 기초를 두었다. 그러나 귀하의 초기 코드에서는 명세서에 사용하고있었습니다. 또한 초기 쿼리에서 SUM 집계를 추가 했으므로 추가했습니다. –