2015-09-08 44 views
0

我連接到ODBC並填充數據表。 根據識別類型,INVOICE爲+或否定。 我需要通過每個標識符來總結第二列。 我目前使用分組列'indentifier,但它是一個計數,所以不考慮a +或 - 。簡單地說,它計數每一次。總和/計數列數據數據表C#控制檯應用程序

這裏是一個例子。

IDENTIFIER ---- | INVOICE

1A557 -------- | 1 ----------- |

2B123 -------- | 1 ----------- |

1A557 -------- | -1 ----------- |

1A557 -------- | 1 ----------- |

2B123 -------- | 1 ----------- |

9C437 -------- | 1 ----------- |

我想看到的是一個總結。 這是以上的結果。

1A557 -------- | 1 ----------- |

2B123 -------- | 2 ----------- |

9C437 -------- | 1 ----------- |

這是我目前使用的代碼,它不會完成這項工作。

var accountGroups = completeDT_units.AsEnumerable() 
        .GroupBy(row => row.Field<String>("IDENTIFIER")) 
        .Select(grp => new 
        { 
          Account = grp.Key, 
          Count = grp.Count() 
        }); 

一旦這個運行,我需要看到總結計數。 我以前使用下面的代碼複製到另一個數據表。

var tblAccCounts = new DataTable(); tblAccCounts.Columns.Add("IDENTIFIER"); tblAccCounts.Columns.Add("Totals"); //, typeof(int) foreach (var grp in accountGroups) tblAccCounts.Rows.Add(grp.Account, grp.Count); 

回答

0

您應該使用grp.Sum而不是grp.Count。 喜歡的東西:

var accountGroups = completeDT_units.AsEnumerable() 
        .GroupBy(row => row.Field<String>("IDENTIFIER")) 
        .Select(grp => new 
        { 
          Account = grp.Key, 
          Count = grp.Sum(row=>row.Field<int>("INVOICE")) 
        }); 
0

試試這個:

var accountGroups = completeDT_units.AsEnumerable() 
       .GroupBy(row => row.Field<String>("IDENTIFIER")) 
       .Select(grp => new 
       { 
         Account = grp.Key, 
         Count = grp.Sum(r => r.Field<int>("INVOICE")) 
       }); 
相關問題