var users=db.Users.Where(u => u.Name.StartsWith(term) || u.Email.StartsWith(term) || u.FirstName.StartsWith(term)).ToArray();
var jsos=users.Select(u => new { label = u.FirstName +" "+ u.Name+ " (" + u.Email+")", value = u.Id });
按预期工作。但是,如果没有 ToArray()
,我会得到看起来很奇怪的行为:null
firstName
导致标签被评估为 空
。使用 ToArray()
我得到了预期的行为。 (null 被视为空字符串并连接到其他非空字符串)。为什么?
最佳答案
在 SQL 世界中,根据定义,任何包含 NULL 的表达式都会成为 NULL。这是因为 NULL 表示不确定值 - 不确定值 + 任何其他值仍然是不确定值,即 NULL。
同样,在 SQL 中,您可以使用类似 COALESCE 的方法将 NULL 转换为空字符串——我不记得 linq 等价物是什么。
关于c# - 为什么一个空字符串连接到一个非空字符串评估为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941582/