我试图在c#中遍历DataTable并从单元格中获取值。返回的数据可能看起来像这样,具体取决于选择的月份数。
Total Year Month TypeId
466 2018 1 1
77 2018 1 2
471 2018 2 1
58 2018 2 2
459 2018 3 1
151 2018 3 2
第1个月等于一月。我将如何根据输入的日期对这些数据进行拆分,因此,如果有人要查找3月的数据,我希望将3月的总计(459 + 151)
这是我的代码。
if (ds.Tables.Count > 0)
{
foreach (DataTable table in ds.Tables)
{
foreach (DataRow row in table.Rows)
{
result.Total = Convert.ToInt32(ds.Tables[0].Rows[0]["Total"]);
}
}
}
答案 0 :(得分:0)
您正在遍历所有表的行,但是随后始终使用第一个表的第一行。这显然会给您错误的结果。您必须使用当前行的值。如果只想包含行进值,则需要跳过所有其他行:
if (ds.Tables.Count > 0)
{
foreach (DataTable table in ds.Tables)
{
foreach (DataRow row in table.Rows)
{
if (Convert.ToInt32(row["Month"]) != 3)
{
continue;
}
result.Total = Convert.ToInt32(row["Total"]);
}
}
}
请注意,这假设您的数据集中的所有表都至少具有“月”和“总计”列。大多数现实世界的数据集看起来都不是这样。由于您没有向我们显示数据集,因此我认为这实际上是基础结构。
答案 1 :(得分:0)
在下面使用以获取进行总额。
int sum = Convert.ToInt32(dt1.Compute("SUM(Total)", "Month = 3"));