包含的表达式,给出类似“对象引用未设置为对象的实例”之类的错误

本文关键字:对象 设置 错误 实例 表达式 包含 对象引用 | 更新日期: 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 操作数,但仅在必要时计算其第二个操作数