当我使用带有包含的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();
任何想法如何解决?
答案 0 :(得分:3)
Where
条款中的条件应如下:
a.Email != null && a.Email.ToLower().Contains(searchText)
因为只有在null
的情况下它才会短路。即使您的Email
为null
,它也会尝试使用ToLower
并为您提供NRE。
请参阅:&& Operator (C# Reference)
条件AND运算符(&&)执行其bool的逻辑AND 操作数,但仅在必要时才评估其第二个操作数