4

如何在列中的任何一列为空时使用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 引用未设置为对象的实例 。

回答

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; 
+0

空误差是由任一屏幕名,姓或姓氏被空引起的。放入user.ScreenName!= null并围绕它,Contains过滤器与括号()做了诀窍。谢谢。 – LaundroMatt 2011-04-24 05:23:53

0

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

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