很多时候,我有一个输入文本,如果它是空的(例如,如果用户没有键入任何文本),我想向DB查询发送一个空值。
我不想发送String.Empty.
(或""
)。
因此,我发现自己经常这样做:
var mySqlValue = string.IsNullOrEmpty( tbCustomerId.Text)?null:tbCustomerId.Text;
这在我看来很难理解。.NET为相反的场景提供了许多其他解决方案:
string.IsNullOrEmpty
string.IsNullOrWhiteSpace
myProblemVal ?? myDefultVal
C#中有没有内置的东西可以让我用更短的方式来做这件事,比如相反的方向?
我知道这可以通过编写自己的扩展方法来解决,我知道如何做到这一点;这不是我感兴趣的解决方案。
我在找类似“if empty -> null
“的代码。
6条答案
按热度按时间6pp0gazn1#
您可以使用一种延伸方法:
你可以这样使用:
我真的不知道你对比Extension方法更好的东西有什么想法。你如何定义“更好”?更短?使用特殊的关键字?使用很少使用的运算符来显得聪明?这已经只是一个附加到你的值的方法调用,甚至可以在空值上工作,你需要的逻辑真的不能用比这更短的方式来表达。而且,我不知道它有什么特殊的语法。
bvjveswy2#
C#中是否有内置的东西可以让我以更短的方式完成此操作
不,尽管我认为你在问题中描述的(扩展方法)绝对是好的,正如你在问题中描述的,在另一个方向上你有空合并。
8oomwypt3#
声明您自己的静态方法:
做
MyHelper.NullIfEmpty(value)
并不比调用字符串类型的静态方法更丑陋...而且似乎比每次都写string.IsNullOrEmpty( tbCustomerId.Text)?null:tbCustomerId.Text
更干净。h6my8fg24#
从字符串开始
编写一个将空转换为空的方法
然后 Package 该方法,并使用与SQL中相同的语法回调它
ulmd4ohb5#
这不是你直接问的问题,而是实现你试图做的事情(如果字符串的值为空,则将空值传递给SQL)的一种方法,即使用if语句检查在SQL查询参数赋值期间传递的字符串值的长度(例如
Parameters.AddWithValue("@parameter", mySqlValue)
):其中
SqlCommand
是using
语句中的变量,该语句使用参数化SQL查询和预先建立的SQL连接/连接字符串。这不是一个优雅的解决方案,但它可以工作(并且不需要编写扩展方法)。
nkoocmlb6#
如果您希望在反序列化json时自动将空字符串返回为null: