【问题标题】:Contains Query on multiple columns包含多列查询
【发布时间】:2011-08-11 01:42:44
【问题描述】:

当任何一列可能为空时,如何使用 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:对象 引用未设置为 一个对象。

【问题讨论】:

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


    【解决方案1】:

    添加非空条件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;
    

    【讨论】:

    • null 错误是由 ScreenName、FirstName 或 LastName 为 null 引起的。放入 user.ScreenName != null 并将其括起来,并使用方括号 ( ) 包含过滤器就可以了。谢谢。
    【解决方案2】:
    IEnumerable<User> users = from user in databaseUsers
    where
         (user.ScreenName + ' ' + user.FirstName + ' ' + user.LastName).Contains(search)
    select user;
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-04
        • 2016-08-08
        • 2011-04-17
        • 2014-05-19
        相关资源
        最近更新 更多