如何在数据表中获取“件”列的总和?

如何在数据表中获取“件”列的总和? 说我有下表。 如何计算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()); } 

对不起,但我是新的DataBase开发人员,我的英语会说不太好。

使用DataTable.Compute方法,您可以:

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

您可以使用AsEnumerable方法,如下所示:

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

迈克尔的建议少了一步:

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

(这是使用Linq到DataSet )

在.NET 4 Windows应用程序中,这段代码在sum变量中给出了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);