2011-10-26 83 views
2

我怎樣才能得到一個數據表中的列「件」的總和?假設我有下面的表格。我如何計算article =「milk」和artno =「15」的「總數」部分?我怎樣才能得到一個數據表中的列「件」的總和?

Columns: article  artno pieces 
Rows: 
1   milk  15  1 
2   water  12  1 
3   apple  13  2 
4   milk  15  1 
5   milk  16  1 
6   bread  11  2 
7   milk  16  4 

了我新的DataTable的結果應該是這樣的:

Columns: article  artno pieces 
Rows: 
1   bread  11  2 
2   water  12  1 
3   apple  13  2 
4   milk  15  2 
5   milk  16  5 

我的代碼:

foreach (DataRow foundDataRow in foundRows1) 
{ 
    int i = 0; 
    foreach (DataRow dataRow in foundRows2) 
    { 
     if (object.Equals(dataRow.ItemArray[0], foundDataRow.ItemArray[0]) 
      && object.Equals(dataRow.ItemArray[3], foundDataRow.ItemArray[3])) 
     { 
      i = i + Convert.ToInt16(dataRow.ItemArray[4]); 
     } 
    } 
    Debug.Print(i.ToString()); 
} 

很抱歉,但我是新數據庫開發人員,我的英語會說的語言不太好。

在.NET 4的Windows應用程序

回答

6

使用DataTable.Compute方法,你可以這樣做:

int sum = (int)table.Compute("Sum(pieces)", "article = 'milk' AND artno='15'"); 
+0

這是個好主意! Thx – McSteel

+0

這個功能幫助我很好! THX – McSteel

0

,這個代碼片段給出了9總和變量:

DataTable dt = new DataTable("aaa"); 

    dt.Columns.Add("pieces", typeof(int)); 

    dt.Rows.Add(new object[] { 1 }); 
    dt.Rows.Add(new object[] { 3 }); 
    dt.Rows.Add(new object[] { 5 }); 

    var sum = dt.Compute("SUM(pieces)", string.Empty); 
+0

我們使用.NET 3.5框架。 – McSteel

+0

dt.Compute(「SUM(pieces)」,string.Empty)我可以使用所有塊的總和 – McSteel

+0

應該仍然可以工作Compute函數在那裏,因爲.NET 1.x –

2

你可以使用AsEnumerable方法,像這樣:

var results = dataTable.AsEnumerable() 
         .Where(row => row.Field<string>("article") == "milk" && 
            row.Field<int>("artno") == 15) 
         .Select(row => row.Field<int>("pieces")) 
         .Sum(); 
+0

我的數據表沒有AsEnumerable()函數?! – McSteel

+0

您可能需要添加對System.Data的引用。 –

1

使用邁克爾的建議1升ESS步:

var results = dataTable.AsEnumerable() 
         .Where(row => (row.Field<string>("article ") == "milk") && 
            (row.Field<int>("artno") == 15)) 
         .Sum(row => row.Field<int>("pieces")); 

(這是使用Linq to DataSet

+0

Thx回答。但「文章」和「artno」這兩列甚至不是相同的數據。每次都有其他數據。 – McSteel

+0

@McSteel,好的,我已經修復了相應的代碼。 –

+0

不,這不是1對1的關係,因爲牛奶可以是artno = 15或16 – McSteel

相關問題