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

相关问题