LINQ查询.ToList()在运行时失败

时间:2014-03-18 20:25:13

标签: linq linq-to-sql

我正在尝试理解下面的查询失败的原因

  

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 个答案:

答案 0 :(得分:1)

.之前的事情之一是null。找出哪个。

ToList导致大多数查询作为具有C#语义的对象的LINQ运行。没有ToList数据库中的大多数运行,它们具有NULL值的不同语义。

或许,你应该两个理解什么是null 在数据库中运行查询。