ошибка при попытке применить запрос linq к списку, который у меня есть в результате другого lin - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь отфильтровать некоторые данные, которые у меня есть. Сначала данные приводятся в следующем виде:

List<task> method1(){    
return context.Tasks.where(x => x.date < Datetime.Today()).Tolist();
}

тогда я пытаюсь сделать следующее:

void method2(){
List<task> tasks1 = method1();
}

до сих пор я заполнил список задач 6 записями, как показано отладчиком. Но когда я пытаюсь связать этот список, я получаю исключение nullreferenceexception> tasks1 - список из 6 задач.

List<Task> tasks2 = tasks1.where(x => x.something.Equals("123")).tolist();

Для отладки и более глубокого погружения я попытался разделить код следующим образом:

var q = tasks1.where(x => x.something.Equals("123"));
  List<Task> tasks2 = q.tolist();

при отладке я нашел следующие данные в

q: {current = null, непубличные участники: { текущий = ..., перечислитель = ..., предикат = ..., ..... и немного больше полей, }}

почему эта ошибка? и как это исправить?

1 Ответ

3 голосов
/ 25 апреля 2019

Из кода, которым вы поделились, единственной причиной исключения нулевой ссылки может быть вызов метода Equals для свойства null в этой части:

Where(x => x.something.Equals("123"))

, означающего, что somethingсвойство хотя бы одного элемента в списке - null.У вас есть разные способы справиться с этим, один из которых может быть:

Where(x => x.something != null && x.something.Equals("123"))
...