Изменения Foreach не сохраняются в коллекции элементов Linq - PullRequest
3 голосов
/ 12 октября 2011

В следующем примере изменения, примененные в foreach, не сохраняются, когда я возвращаю коллекцию:

var people = SomeLinqToSqlSource();

foreach (var person in people)
{
   person.Name = "Jimmy";
}

return people.AsQueryable();

Это противоречит моему пониманию того, что в рамках foreach (..) вы работаете посредством ссылкитекущий элемент.

Может кто-нибудь, пожалуйста, дайте мне знать, где я иду не так?

Спасибо.

1 Ответ

7 голосов
/ 12 октября 2011

Проблема в том, что people является IQueryable и запрашивается при его возврате, а потребитель перечисляет результаты - ваши обновленные свойства исчезли, поскольку каждый экземпляр person восстанавливается путем выполнения запроса. .

Если вы хотите сохранить изменения, вы должны сначала материализовать свои данные, то есть, используя ToList(), а затем вернуть список как IEnumerable (или IList)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...