2016-06-27 2 views
0

그룹화 열 합계를 제외 :값은 내 DataTable에있는 LINQ

╔═══════════════╦═══════════════╦═══════════════╗ 
║ CodTipoMoneda ║ idTipoCuenta ║  Saldo ║ 
╠═══════════════╬═══════════════╬═══════════════╣ 
║ 002   ║   10 ║   854 ║ 
║ 003   ║   21 ║   500 ║ 
║ 002   ║   10 ║   500 ║ 
║ 002   ║   22 ║   680 ║ 
║ 003   ║   20 ║   130 ║ 
║ 002   ║   30 ║   10 ║ 
║ 003   ║   12 ║    2 ║ 
╚═══════════════╩═══════════════╩═══════════════╝ 

내가 CodTipoMoneda하여 Saldo 열 그룹 합계 필요,이 코드가 (을 그것은 작동이의!).

Dim query = From row In oDT.AsEnumerable() 
       Group row By Moneda = New With { 
        Key .CodTipoMoneda = row.Field(Of String)("CodTipoMoneda") 
       } Into NameGroup = Group 
       Select New With { 
        .TipoMoneda = Moneda.CodTipoMoneda, 
        .Saldo = NameGroup.Sum(Function(r) r.Field(Of Decimal)("Saldo")) 
       } 

뿐만 아니라 내가 예를 들어, idTipoCuenta에서 일부 값을 제외 where 조건을 추가 할 값을 idTipoCuenta에서 10 and 20을 제외 할 수 있습니다.

╔═══════════════╦═══════════════╦═══════════════╗ 
║ CodTipoMoneda ║ idTipoCuenta ║  Saldo ║ 
╠═══════════════╬═══════════════╬═══════════════╣ 
║ 002   ║   10 ║   854 ║ (not sum) 
║ 003   ║   21 ║   500 ║ 
║ 002   ║   10 ║   500 ║ (not sum) 
║ 002   ║   22 ║   680 ║ 
║ 003   ║   20 ║   130 ║ (not sum) 
║ 002   ║   30 ║   10 ║ 
║ 003   ║   12 ║    2 ║ 
╚═══════════════╩═══════════════╩═══════════════╝ 

별로 도움이되지 않습니다.

답변

2

사용 Linq에 Where 기능 :

Dim query = From row In oDT.AsEnumerable() 
      Group row By Moneda = 
      New With 
      { 
       Key .CodTipoMoneda = row.Field(Of String)("CodTipoMoneda") 
      } Into NameGroup = Group 
        Select New With 
        { 
         .TipoMoneda = Moneda.CodTipoMoneda, 
         .Saldo = NameGroup.Where(Function(n) n.Field(Of Decimal)("Saldo") <> 10) 
              .Sum(Function(r) r.Field(Of Decimal)("Saldo")) 
        } 

내 VB 녹슨 조금 너무 따라 조정 부담입니다.