生成ToList()时LINQ检查字符串属性为NULL

use*_*422 2 c# linq

我有这个Linq语句,如果property不是NULL,它会成功构建一个列表

 results.AddRange(m_CTS.Entity.Where(x => x.Property.Contains(search)).ToList());
Run Code Online (Sandbox Code Playgroud)

但是,如果x.property为null然后它出错,那么我想尝试将其检查为null,如果它不为null,则继续构建列表.

我试过了,

 results.AddRange(m_CTS.Entity.Where(x => x.Property == null ? "" : x.Property.Contains(search)).ToList());
Run Code Online (Sandbox Code Playgroud)

但这也是错误,我做错了什么?

提前致谢

Sel*_*enç 7

你应该检查null这样:

x.Property != null && x.Property.Contains(search)
Run Code Online (Sandbox Code Playgroud)

Where期望一个返回a的语句bool,但是你的第一个表达式返回string而另一个表达式返回bool.因此它不能编译.

为什么究其原因&&是因为作品短路.如果x.Property != null演算值为假的第二个表达式将不会被evaluted,你不会得到例外.