如何在数据表中获取“件”列的总和?说我有下表。如何计算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开发人员,而且我的英语口语不太好。
答案 0 :(得分:6)
使用DataTable.Compute
方法,您可以执行以下操作:
int sum = (int)table.Compute("Sum(pieces)", "article = 'milk' AND artno='15'");
答案 1 :(得分:3)
您可以使用AsEnumerable
方法,如下所示:
var results = dataTable.AsEnumerable()
.Where(row => row.Field<string>("article") == "milk" &&
row.Field<int>("artno") == 15)
.Select(row => row.Field<int>("pieces"))
.Sum();
答案 2 :(得分:1)
迈克尔的建议少了一步:
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)
答案 3 :(得分:0)
在.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);