NVarChar 转换为 C# 数据类型

5

该数据库存储nvarchar类型数据,我需要检索这些信息并将其转换为C#数据类型,但不需要编写任何声明性的转换代码。

是否可以将nvarchar隐式转换为C#数据类型?(例如nvarchar转换为int)


2
你可以使用类似于 int.TryParse() 的方法将字符数据解析为数字类型。但是请注意,并没有隐含的保证任何给定的字符串都可以被解释为数字,因此你的代码应该处理解析失败的情况。 - David
@David 请看我上面的编辑。 - user3308043
1
语言中没有机制会假装一个字符串是一个整数。这样的机制本质上是容易出错的,因为并非所有的字符串都可以被解释成整数。你可以编写这样的机制,在尝试转换之前内部执行数据安全性检查。但你最好将数值数据存储为数值数据。 - David
这是我正在研究的潜在EAV系统的一部分,目前它没有提供存储除nvarchar之外的任何方式。 - user3308043
2个回答

8
Nvarchar是一个字符串,如果你想将其转换为int,你需要进行某种类型的转换,因为该列中可能包含“Potato”,那么对应的int是多少呢?
这里列出了所有SQL类型及其对应的C#类型。因此,如果你想在C#中使用不经过转换的int,唯一的选择就是在Sql中使用int

1

除了将其视为字符串之外,您无法隐式地对其执行任何操作。

如果您希望它是一个整数,则可以使用一些逻辑来解析或更好地尝试解析它。

请参阅以下内容:

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

这完全取决于您对数据库中输入的信任程度和数量。


很棒的答案。带有布尔返回值的TryParse()是一个很棒的函数。 - user3308043

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接