2014-03-18 40 views
1

失敗我試圖理解爲什麼下面的查詢失敗,LINQ查詢.ToList()在運行時

System.NullReferenceException:對象不設置到對象的實例。

  var query = from p in UserProfiles.ToList() 
        where p.FirstName.ToLower().Contains(lettersToMatch.ToLower()) || p.LastName.ToLower().Contains(lettersToMatch.ToLower()) 
        select new MembershipSummaryDTO 
        { 
         EmailAddress = p.EmailAddress, 
         FullName = string.Format("{0} {1}", p.FirstName, p.LastName), 
         UserName = p.UserName, 
         IsApproved = p.IsEnabled, 
         UserId = p.UserId 
        }; 

堆棧跟蹤指向WHERE子句

133線:其中p.FirstName.ToLower()包含(lettersToMatch.ToLower())|| p.LastName.ToLower()。包含(lettersToMatch.ToLower())

的解決辦法是消除對UserProfiles.ToList的.ToList()(),我想知道爲什麼失敗(不就地修復)。

回答

1

.之前的一件事是null。找出哪個。

ToList導致大部分查詢作爲LINQ運行到具有完全C#語義的對象。沒有ToList大部分運行在數據庫中,它具有NULL值的不同語義。

也許,你應該明白什麼是空運行在數據庫中查詢。

+0

UserProfile.LastName字段的空值是問題。我應該在離開前查看要返回的數據。感謝您的指導。 –