2010-12-16 4 views
2

dataContext.Geo_Countries.Where (c => c.Name.Contains (searchKey)). ToList();Когда IQueryable возвращает запись, ToList() выдает исключение

Когда IQueryable не возвращает записи, я получаю исключение значения null.

Какое решение?

+0

Существует что-то еще происходит тогда, потому что, как правило, вы не должны получить нулевое исключение из инструкции не опубликован, если DataContext или Geo_Countries имеет значение NULL. Вам может потребоваться опубликовать дополнительную информацию, например, какого провайдера linq вы используете ... – 2010-12-16 20:52:10

+0

Вы не должны получать исключение из этого ... если вы не пытаетесь оценить результаты этого запроса. – Vishal 2010-12-16 20:53:09

+0

Используя базу данных Northwind и LINQPad, я запустил это: `Категории.Where (c => c.CategoryName ==" XXXX "). ToList(). Dump();` и он работал нормально, возвращая пустой список. – 2010-12-16 20:54:21

ответ

4

Я подозреваю, что у вас нет проблем, когда нет совпадений. Я подозреваю, что вы получили его, когда в вашей базе данных есть строка без значения Name. Либо это, либо вы делаете что-то еще, что вы нам не показали. Как выглядит трассировка стека?

2

пытаются использовать этот код

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

Вызов ToList() на IQueryable сгенерирует исключение, если код не правильно выполнить. В следующем примере, ToList() будет сгенерировано исключение, если c.Name равно нулю:

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


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