When IQueryable returns no record ToList() throws

2019-05-16 02:44发布

问题:

dataContext.Geo_Countries.Where(c => c.Name.Contains(searchKey)).ToList();

when the IQueryable returns no records I get a value null exception.

What is the solution?

回答1:

I suspect you don't get the problem when there are no matches - I suspect you get it when there's a row in your database with no Name value. Either that, or you're doing something else which you haven't shown us. What does the stack trace look like?



回答2:

try to use this code

dataContext.Geo_Countries.Where(c => c.Name != null && c.Name.Contains(searchKey)).ToList();


回答3:

Calling ToList() on IQueryable will throw an exception if code doesn't properly execute. In the following example, ToList() will throw an exception if c.Name is null:

void Main()
{
    var countries = new [] { new Country() }.AsQueryable();
    countries.Where(c => c.Name.Contains("bubba")).ToList();
}


class Country{
  public string Name { get; set; }
}