Check String null或empty并替换为另一个字符串

时间:2016-02-02 06:55:04

标签: c# asp.net-mvc

在这里,我想,如果AvailCode以nullempty字符串形式出现,那么我需要将其显示为“临时不可用”。但是我的编码不会显示那个。 (仅考虑Avail Code)。

var _staff = trv.GetBookDetails("4500").Select(b => new
{
    value = b.bookno,
    text =  b.bookname + " " + "/"+" " + b.AvailCode ?? "TemporaryUnavailable",  
});

3 个答案:

答案 0 :(得分:4)

??运算符只处理NULL个案,而不是空案例

替换

b.AvailCode ?? "TemporaryUnavailable"

string.IsNullOrEmpty(b.AvailCode)? "TemporaryUnavailable" : b.AvailCode

所以正确的行是

text = b.bookname + " / " + (string.IsNullOrEmpty(b.AvailCode) ? "TemporaryUnavailable" : b.AvailCode),

答案 1 :(得分:2)

如果操作数不为null,则调用null-coalescing运算符的

??运算符返回左侧操作数;否则它会返回右手操作数。

不会检查为空;

改为使用string.IsNullOrWhitespace方法。

string.IsNullOrWhitespace(b.AvailCode) ? "TemporaryUnavailable" : b.AvailCode

答案 2 :(得分:1)

运算符??的优先级非常低,在左侧的+运算符之后进行了评估。因此,您永远无法在左侧获得null。你需要用括号括起来:

  text =  b.bookname + " " + "/"+" " + (b.AvailCode ?? "TemporaryUnavailable"),  

或者,如果你想处理也是空的:

  text =  b.bookname + " " + "/"+" " + (string.IsNullOrEmpty(b.AvailCode) ? "TemporaryUnavailable" : b.AvailCode),