包含多列的查询

时间:2011-04-22 16:06:35

标签: c# linq-to-sql exception-handling nullreferenceexception

当列中的任何一列可能为null时,如何使用LINQ to SQL搜索多个列?

IEnumerable<User> users = from user in databaseUsers
        where
             user.ScreenName.Contains(search)
             || user.FirstName.Contains(search)
             || user.LastName.Contains(search)
        select user;

我一直得到这个例外:

  

对象引用未设置为   对象的实例。

     

描述:一个   未处理的异常发生在   当前网络的执行   请求。请查看堆栈跟踪   有关错误的更多信息   它起源于代码。

     

异常详细信息:   System.NullReferenceException:Object   引用未设置为的实例   一个对象。

3 个答案:

答案 0 :(得分:8)

添加非空条件user.Property != null

  IEnumerable<User> users = from user in databaseUsers
    where
         (user.ScreenName != null && user.ScreenName.Contains(search))
         || (user.FirstName != null && user.FirstName.Contains(search))
         || ( user.LastName != null && user.LastName.Contains(search))
    select user;

答案 1 :(得分:2)

IEnumerable<User> users = from user in databaseUsers
where
     (user.ScreenName + ' ' + user.FirstName + ' ' + user.LastName).Contains(search)
select user;

答案 2 :(得分:0)

您的用户是空条目,或者您的databaseUsers未初始化。