С# не удается установить свойство внутри IEnumerableC#

Место общения программистов C#
Ответить
Anonymous
 С# не удается установить свойство внутри IEnumerable

Сообщение Anonymous »

В каком-то коде C# я заметил странное поведение, которое я не могу объяснить. Возможно, мне не хватает чего-то важного, поэтому я надеюсь, что кто-нибудь сможет включить для меня свет.
Есть блок кода, который выглядит так:

Код: Выделить всё

    IEnumerable objects = GetObjectsFromApiCall();

for (int i = 0; i < objects.Count(); i++)
{
if (String.IsNullOrEmpty(objects.ElementAt(i).SubObject.Title))
{
SubObject sub = GetSubObjectFromDatabase((long)objects.ElementAt(i).SubObject.Id);

if (sub != null)
{
objects.ElementAt(i).SubObject.Title = sub.Title;
}
}
}
Когда вы пройдете по нему, все в этом коде будет работать правильно. Коллекция «объектов» заполняется, как и ожидалось. «sub» извлекается в собранном виде и имеет полный набор ожидаемых свойств, включая заполненное свойство Title. Во время выполнения ошибок не возникает.
Но... свойство SubObject.Title (которое имеет только стандартный код get; set; code), существующее в каждом объекте, упорно остается пустым.
Я в растерянности. Кто-нибудь объяснит, что происходит?
EDIT: для тех, кто предлагал мне не использовать цикл for и ElementAt, я начал с цикла foreach, но подумал, что это может быть источник проблемы, потому что он каждый раз получал новый подобъект. Благодаря вашей помощи исправлено, и ForEach восстановлен.
С уважением,
Мэтт

Подробнее здесь: https://stackoverflow.com/questions/152 ... enumerable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»