유효한 숫자 값으로 채워진 문자열 형식 열이있는 DataTable이 있고이 값의 합계를 가져와야합니다. 이 인스턴스에서 작업중인 데이터를 제어 할 수 있다면 "비용"을 저장하는 문자열 열을 사용하지 않았을 것이지만 그것은 불행한 현실입니다. 저는 "SUM (Convert ([Column], 'DataType'))"식과 필터가없는 DataTable.Compute 메서드를 사용했습니다. 문제는 다음 예외가 발생한다는 것입니다.SyntaxErrorException DataTable.Compute 메서드를 사용하여 변환 된 문자열 열의 합계를 가져옵니다.
System.Data.SyntaxErrorException - 집계 인수의 구문 오류 : 가능한 '하위'한정자를 사용하여 단일 열 인수가 필요합니다.
내가 가지고있는 문제를 성공적으로 재생하는 작은 코드 블록을 조합했습니다.
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'))", "");
마지막으로 참고, 그래서이 현재의 옵션이 아닌 통해 얻을 LINQ를 사용하여 .NET 2.0로 제한하고있다.
분명히! 그러나 제 질문에 언급했듯이 실제 프로그램에서 나와 전달되는 DataTable을 제어 할 수는 없습니다. 이 질문에 대해 작성한 코드 블록은 내가 다루고있는 것의 단순화 된 복제입니다. – Hagelt18
@ Hagelt18 : 업데이트 된 답변보기 – shahkalpesh
감사합니다 Shahkalpesh, 그게 멋지게 잘 될 것 같습니다. 비록 내가 그것을 사용하는 방법은 여기에 허용 대답 : 비록 예외를 던져 이상한 발견하지만 [링크] (http://stackoverflow.com/questions/708299/sum-datatable-columns-of-type-string). 우리는 결코 알지 못할지도 모른다, 하하. 도움 주셔서 감사합니다, 나는이 방법을 사용하여 끝날 것입니다! – Hagelt18