Vb.net .NET-如果指定的字符串长度为0,则为空对象

Vb.net .NET-如果指定的字符串长度为0,则为空对象,vb.net,string,null,asp.net-3.5,Vb.net,String,Null,Asp.net 3.5,当前,每当我向db传递字符串时,如果该字符串为空,则通过执行以下操作将该对象设置为NULL: IIf(DescriptionTxt.Text.length > 0, DescriptionTxt.Text, DBNull.Value) 我正在考虑编写一个函数来减少代码的长度,并使其更加一致 但是,我想知道,在.NET 3.5中是否已经有了这样做的方法?如果不在数据库中添加大量空值,您的数据库将执行得更好,并且更易于正确查询。我会坚持使用“”、0、-1、负无穷大或其他适合您情况的值,并更改

当前,每当我向db传递字符串时,如果该字符串为空,则通过执行以下操作将该对象设置为NULL:

IIf(DescriptionTxt.Text.length > 0, DescriptionTxt.Text, DBNull.Value)
我正在考虑编写一个函数来减少代码的长度,并使其更加一致


但是,我想知道,在.NET 3.5中是否已经有了这样做的方法?

如果不在数据库中添加大量空值,您的数据库将执行得更好,并且更易于正确查询。我会坚持使用“”、0、-1、负无穷大或其他适合您情况的值,并更改您的应用程序代码以适合您的情况。避免数据库中不必要的空值。

您可以编写一个扩展方法:

public static object AsNull(this string me)
{
    if (string.IsNullOrEmpty(me))
        return DBNull.Value;
    return me;
}
然后在代码中使用

DescriptionTxt.Text.AsNull()
但除此之外,在.NET中没有任何东西可以默认执行此操作。事实上,我认识的大多数开发人员更喜欢区分空字符串和空字符串。它们在.NET中是不同的,所以如果它们在DB中也是不同的,那么就容易多了(而且是一致的)


添加:OOps刚刚注意到这是一个VB.NET问题。抱歉,我的VB.NET有点生疏,但我相信您将能够将上面的简单函数转换为VB.NET。

您已经有了最简单的代码。没有任何3.5工具可以简化这一过程。优化可能是您的代码和@Vilx-code之间的合并:

IIf(String.IsNullOrEmpty(DescriptionTxt.Text), DBNull.Value, DescriptionTxt.Text) 

我的新闻文章有一些可选字段,如描述。当然,最好将空值存储为NULL,而不是空字符串?更少的空间,更易于管理(如在中,我将能够使用系统函数,如ISNULL)。谢谢@Vilx-。最后我使用了:公共共享函数NullIfEmpty(ByVal值作为字符串)作为字符串返回IIf(String.IsNullOrEmpty(Value)=False,Value,DBNull.Value)endFunction@Curt-正如他们所说-相同的区别!:)