2014-08-29 2 views
0

데이터베이스가 nvarchar를 저장하므로 정보를 검색하고 선언적 변환 코드없이 C# 데이터 형식으로 잼하고 싶습니다.NVarChar to C# 데이터 형식

암시 적으로 nvarchar를 C# 데이터 형식으로 변환 할 수 있습니까? 당신이 int에있는 설정하려는 경우

+2

'int.TryParse()'와 같은 것을 사용하여 * 문자 데이터를 숫자 형식으로 구문 분석 할 수 있습니다. 주어진 문자열을 숫자로 해석 할 수 있다는 암시 적 * 보장이 없으므로 구문 분석이 실패한 조건을 코드에서 처리해야합니다. – David

+0

@David 위의 편집을 참조하십시오. – user3308043

+1

문자열에 정수가없는 척하는 메커니즘이 없습니다. 모든 문자열이 정수로 해석 될 수있는 것은 아니기 때문에 이러한 메커니즘은 본질적으로 오류가 발생하기 쉽습니다. 데이터를 변환하려고 시도하기 전에 내부적으로 안전 체크를 수행하는 메커니즘을 작성할 수 있습니다. 최선의 방법은 숫자 데이터를 숫자 데이터로 저장하는 것입니다. – David

답변

4

NVARCHAR는 내가 열에서 "감자"를 가질 수로 변환의 어떤 종류를 거쳐야합니다, 문자열 (예 : NVARCHAR int로), 어떤 int 것 에지도?

Here is a listing 및 모든 C# 유형이 매핑됩니다. 따라서 변환없이 C#에서 int을 원할 경우 유일한 옵션은 Sql의 int입니다.

+0

우수합니다. 감사합니다. – user3308043

+0

4 분 후에 체크 표시가 나옵니다. – user3308043

1

문자열로 처리하는 것 외에는 암묵적으로 할 수있는 일이 많지 않습니다.

int가 될 것으로 예상되는 경우 Parse 이상 또는 TryParse에 대한 논리를 사용할 수 있습니다.

당신이 당신의 데이터베이스에 입력을 신뢰하는 경우 얼마나 그것은 모두에 따라 다음

string nvarchar1 = "12"; 
string nvarchar2 = "1.2"; 
string nvarchar3 = "hello"; 

var one = int.Parse(nvarchar1); // good 
var two = int.Parse(nvarchar2); // exception 
var three = int.Parse(nvarchar3); // exception 

var bone = int.TryParse(nvarchar1,out one); // true 
var btwo = int.TryParse(nvarchar2,out one).Dump(); // False, 0 
var bthree = int.TryParse(nvarchar3,out one); // False, 0 

에서보세요.

+0

좋은 답변입니다. bool 반환 값이있는 TryParse()는 훌륭한 함수입니다. – user3308043