在C#中循环遍历DataTable并更新变量

时间:2018-07-02 08:52:59

标签: c# sql loops datatable

我试图在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"]);

                            }
                        }
}

2 个答案:

答案 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"));