Вы перебираете строки всех таблиц, но затем всегда используете первую строку первой таблицы. Это, очевидно, даст вам неправильный результат. Вы должны использовать значение текущей строки. Если вы хотите включить только значения марша, вам нужно пропустить все остальные строки:
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"]);
}
}
}
Обратите внимание, что это предполагает, что все таблицы в вашем наборе данных имеют как минимум столбцы "Месяц" и "Всего". Большинство реальных наборов данных не выглядят так. Поскольку вы не показываете нам набор данных, я предполагаю, что это на самом деле основная структура.