Предупреждение здесь: доступ к переменной category
внутри замыкания для лямбды Where
.Значение category
изменяется с каждой итерацией, а Where
- задержка выполнения, следовательно, оно будет видеть текущее значение category
в сравнении со значением во время создания лямбды.
В этом случае вы, вероятно, в порядке.Даже если Where
является оценкой задержки, метод AddRange
является быстрым и принудительно завершит оценку Where
.Следовательно, метод Where
увидит ожидаемое значение category
.
Если вы хотите удалить предупреждение, просто объявите локальную копию переменной итерации и сохраните ее.
foreach(var category in categories) {
var localCategory = category;
a.AddRange(_db.Articles.Where(c => c.Categories.Contains(localCategory)));
}