2017-12-08 12 views
0

SQL베이스에서 DataTable으로 데이터를 검색하고 일부 필드에서 소수 작업을 수행하려고합니다.DataTable 필드를 문자열에서 double로 변환

나는이 new DataTable(); 같이 초기화되어 내 DataTablestring의, int들과 double의를 얻을 수 있기 때문이다. 그래서 기본 유형은 string업데이트로 설정됩니다. 이것은 잘못되었습니다. 즉, decimal입니다. 변환 할 필요가 없습니다.

나는 DataTable

myRow = 2; 
double sum = 0; 
foreach (DataRow row in data.Rows) 
{ 
    if (row.Field<String>(myRow) != "") 
     sum = sum + double.Parse(row.Field<String>(myRow), CultureInfo.InvariantCulture.NumberFormat); 
} 

내가 추가 할 빈 필드 방지 내에서 필드를 합계를 상상해보십시오. 그래서 빈 문자열을 변환하려고하지 않습니다.

'System.Decimal'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다. 이 변환 할 "좋은"방법이없는 경우

, 내 DataTabledecimals를 얻을 수 변경할 수 있지만 Decimal들과 내가에게 Fill 어떻게 할 수 있습니까? 기본 유형은 decimal 때문에

업데이트 , 나는 주위

sum = sum + (double) row.Field<decimal>(myRow); 

하나의 작업을 할 수 있습니다 내 데이터베이스 합을 만드는 것입니다.

+0

필드가' 'System.Decimal'' 인 경우 동일한 문자열을 –

+0

질문에 던지려고합니다. 이것은 문자열로 저장되었음을 나타냅니다 :'row.Field '. 그러나 오류는 십진수로 저장되었음을 나타냅니다. 그렇다면 이미 하나 인 경우 10 진수로 문자열을 구문 분석 할 필요가 없습니다. –

+0

_ "또는 내 총액을 처리 할 SQL 요청을 할 수 있습니다."물론, 그렇게 할 수 있습니다. 그러나 지금 당신의 질문은 무엇입니까? –

답변

0
if(row.Field<String>(myRow) != ""){ 
    var stringToDouble = Convert.ToDouble(row.Field<String>(myRow)); 
    //Or you can do Convert.ToDecimal(row.Field<String>(myRow)); 
}