包含的表达式,给出类似“对象引用未设置为对象的实例”之类的错误
本文关键字:对象 设置 错误 实例 表达式 包含 对象引用 | 更新日期: 2023-09-27 18:36:12
当我将 C# linq 表达式与包含一起使用时,我收到一个错误,例如"对象引用未设置为对象的实例"。我的代码选择是,
var query = GetUserDataForList();// It contains the data I want
search = (search == null) ? "" : search;
string searchText = (search == null) ? "" : search.ToLower().ToString();
var users = query.Where(a => a.Email.ToLower().Contains(searchText) && a.Email != null).AsEnumerable();
users = users.Skip(rowsPerPage * (page - 1)).Take(rowsPerPage).AsEnumerable();
知道如何解决这个问题吗?
您在Where
子句中的条件应如下所示:
a.Email != null && a.Email.ToLower().Contains(searchText)
因为只有这样,万一null
它才会短路.现在,即使您Email
null
,它也会尝试使用ToLower
并为您提供NRE。
参见:&& 运算符(C# 参考)
条件 AND 运算符 (&&) 执行其布尔值的逻辑 AND 操作数,但仅在必要时计算其第二个操作数