У меня есть DataTable, в котором есть столбец строкового типа, заполненный допустимыми числовыми значениями, и мне нужно получить сумму этих значений. Пожалуйста, поймите, что если бы я контролировал данные, с которыми я работаю в этом случае, я бы не использовал строковый столбец для хранения «стоимости», но это прискорбная реальность. Я использовал метод DataTable.Compute с выражением "SUM (Convert ([Column], 'DataType'))" "и без фильтра. Проблема в том, что я получаю следующее исключение:
System.Data.SyntaxErrorException - Синтаксическая ошибка в агрегированном аргументе: ожидание аргумента из одного столбца с возможным квалификатором 'Child'.
Я собрал небольшой блок кода, который успешно воспроизводит мою проблему.
DataTable dt = new DataTable();
dt.Columns.Add("Cost", typeof(string));
dt.Rows.Add(new object[] { "1" });
dt.Rows.Add(new object[] { "3.25" });
dt.Rows.Add(new object[] { "0.75" });
object TotalCost = dt.Compute("Sum(Convert(Cost,'System.Decimal'))", "");
Последнее замечание, я ограничен .NET 2.0, поэтому использование LINQ для этого в настоящее время недоступно.