2016-06-27 12 views
0

をグループ化された列を合計する値を除外:は私のDataTableを持っきゅう

╔═══════════════╦═══════════════╦═══════════════╗ 
║ 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からの値10 and 20を除外し、idTipoCuentaからいくつかの値を除外するwhere条件を追加したいと思います。

╔═══════════════╦═══════════════╦═══════════════╗ 
║ 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が錆び少しはそう応じて調整すること自由に感じています。

関連する問題