在这里,我想,如果AvailCode以null
或empty
字符串形式出现,那么我需要将其显示为“临时不可用”。但是我的编码不会显示那个。 (仅考虑Avail Code)。
var _staff = trv.GetBookDetails("4500").Select(b => new
{
value = b.bookno,
text = b.bookname + " " + "/"+" " + b.AvailCode ?? "TemporaryUnavailable",
});
答案 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)
??
运算符返回左侧操作数;否则它会返回右手操作数。
此不会检查为空;
改为使用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),