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;