Tom*_*Tom 2 .net c# linq linq-to-entities
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 });
Run Code Online (Sandbox Code Playgroud)
按预期工作.但是,如果没有ToArray(),我会得到看似奇怪的行为:null firstName标签被评估为的结果null.随着ToArray()我得到预期的行为.(null被视为空字符串并连接到其他非空字符串).为什么?
在SQL世界中,根据定义,任何具有NULL作为其一部分的表达式都将变为NULL.这是因为NULL意味着一个不确定的值 - 一个不确定的值+其他任何东西仍然是一个不确定的值,即NULL.
同样,在SQL中你可以使用像COALESCE这样的东西将NULL转换成一个空字符串 - 我不记得linq等价物是什么.