2014-10-28 4 views
0

나는 람다 식을 처음 사용합니다. db 검색 결과에서 .Sum() 메서드를 사용하려고하는데 Importe 열의 모든 값을 합치려면 다른 테이블의 ID을 사용하여 값을 선택하지만 Json은 전체를 다시 보냅니다. 모든 값을 가진 목록, 그것은 합계를하지 않습니다. 아니면 어떻게 적용해야할지 모르겠다.. 람다 식에서 .Sum()

[[{"Total":0},{"Total":20},{"Total":150},{"Total":330},{"Total":56.2},{"Total":240},{"Total":1750},{"Total":70.07},{"Total":480},{"Total":540},{"Total":95},{"Total":200},{"Total":108},{"Total":108.8},{"Total":880},{"Total":111.98},{"Total":115},{"Total":240},{"Total":125},{"Total":129.98},{"Total":780},{"Total":131.42},{"Total":134.59},{"Total":1260},{"Total":141.65},{"Total":145}]] (and a lot more..) 
+0

데이터의 예상 출력을 제공 할 수 있습니까? 왜 '수입'으로 그룹화할까요? 확실하게 특정 값을 갖는 모든 Importe 값의 합계를 원하지 않습니까? 마지막에 ToList()를 실행하고 있지만 전체 목록을 다시 보냈다고 불평하고 있습니다. 이 코드 스 니펫을 기반으로 실제로 원하는 것을 알기가 어렵습니다. – StriplingWarrior

답변

1

친구가이 문제를 해결하는 데 도움을 주었고 참여가 답변이었습니다. 나는 문제를 충분히 설명하지 못했다고 생각합니다.하지만 SQL 구문과는 다른 방식으로, 람다 식에 대해 배울 좋은 곳을 알면 큰 일이 될 것입니다.

감사합니다. 여기 해결책.

var dato = db.Cuentas.Where(x => x.Codigo == codigo) 
       .Join(db.MovimientosPolizas, cuentas => cuentas.Id, movimientos => movimientos.IdCuenta, (cuenta, movimiento) => new { sumImporte = movimiento.Importe, cuenta = cuenta.Nombre }) 
       .Sum(x => x.sumImporte); 
0

당신이 select new { Total: sumaTotal }를 사용하고, 그 그냥 INT를 다시 보내는 아니에요, 그건 당신에게의 객체를 보내는 것 :

내가 콘솔이납니다

public JsonResult IngresaCuentas(string codigo) 
{ 
    ContextoAngeles db = new ContextoAngeles(); 

    var suma = (from data in db.Cuentas 
       where data.Codigo == codigo 
       select (from n in db.MovimientosPolizas 
         where data.Id == n.IdCuenta 
         group n by new { n.Importe} into g 
         let sumaTotal = (g.Sum(n => n.Importe)) 
         select new 
         { 
          Total: sumaTotal 
         })).ToList(); 

     return Json(suma, JsonRequestBehavior.AllowGet); 
} 

주셔서 감사합니다 Total 필드가있는 익명 형식 나는 그것이 당신이 겪고있는 일이라고 생각하지 않습니다.

: 당신을 위해 무엇을거야 것은 당신이을 조회 한 모든 Importe의 합을 선택하는 경우,

var suma = (from data in db.Cuentas 
      where data.Codigo == codigo 
      select (from n in db.MovimientosPolizas 
        where data.Id == n.IdCuenta 
        group n by new { n.Importe} into g 
        let sumaTotal = (g.Sum(n => n.Importe)) 
        select sumaTotal)).ToList(); 

또는 : 나는 당신이 일을해야한다고 생각 무엇

이 같은 것입니다

var suma = (from data in db.Cuentas 
      where data.Codigo == codigo 
      select (from n in db.MovimientosPolizas 
        where data.Id == n.IdCuenta 
        group n by new { n.Importe} into g 
        let sumaTotal = (g.Sum(n => n.Importe)) 
        select sumaTotal)).Sum();