2014-08-29 154 views
0

數據庫存儲nvarchar,我檢索信息,並且我想將它塞進C#數據類型中,而沒有任何聲明轉換代碼。NVarChar到C#數據類型

你可以隱式地將nvarchar轉換爲C#數據類型嗎? (如爲nvarchar爲int)

+2

您可以使用類似'int.TryParse()'的方式將*字符數據解析爲數字類型。請注意,沒有*隱式*保證任何給定的字符串都可以解釋爲數字,所以您的代碼應該處理解析失敗的情況。 – David 2014-08-29 23:40:21

+0

@大衛看到我上面的編輯。 – user3308043 2014-08-29 23:46:07

+1

語言中沒有任何機制會假裝字符串是一個整數,否。這樣的機制本質上是錯誤傾向的,因爲並不是所有的字符串都可以被解釋爲整數。您可以*寫*這種機制,它會在嘗試轉換數據之前在內部對數據執行安全檢查。儘管你最好的選擇是將數字數據存儲爲數字數據。 – David 2014-08-29 23:48:00

回答

4

nvarchar的是一個字符串,如果你希望把它在一個int你將不得不通過某種轉換的,因爲我可以在列「馬鈴薯」,什麼int會說映射到?

Here is a listing所有SQL類型以及它們映射到的C#類型。所以如果你想在C#中使用int而無需轉換,你唯一的選擇是在Sql中使用int

+0

非常好,謝謝。 – user3308043 2014-08-29 23:47:30

+0

4分鐘,我會通過複選標記。 – user3308043 2014-08-29 23:47:51

1

你可以隱式地處理它,除了將它視爲字符串。

你可以使用一些邏輯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 2014-08-29 23:51:01

相關問題