我有一个页面,您可以在其中搜索人。他们可以获取所有人的列表,也可以通过某些标准(例如名字或姓氏)对其进行过滤。
到目前为止,我一直在尝试使用这个问题中详述的技术。
所以我的代码看起来像
string firstname=...
string lastname=...
var people=from p in People.All()
where (firstname==null || firstname.ToLower()==p.FirstName.ToLower()) &&
(lastname==null || lastname.ToLower()==p.LastName.ToLower())
select p;
构建查询时出现空引用错误,但是当名字和姓氏都为空时。删除 where 子句可以消除错误。
为什么这行不通?C# 是否尝试评估 where 子句每个部分的第二部分?这不应该是因为短路或对吗?