#c# #foreach #nested
#c# #foreach #вложенный
Вопрос:
У меня есть 2 цикла foreach, вложенных следующим образом:
foreach (var item in temp)
{
foreach (var merge in distrolist)
{
if(merge.Name.Equals(item.Name) amp;amp; !merge.Projeid.Equals(item.Projeid))
{
item.Amount = merge.Amount;
}
}
}
этот код при выполнении изменяет количество объекта слияния в списке дистрибутивов. Я совершенно не понимаю, почему. Теперь, интересная часть заключается в том, что измененный объект на самом деле не является текущим объектом слияния в цикле, а не предыдущим объектом в списке дистрибутивов. Temp и distrolist имеют один и тот же общий тип. Я не уверен, что еще добавить, но если вы хотите увидеть больше деталей, я могу отредактировать вопрос.
Комментарии:
1. Здесь вам нужно будет показать соответствующие части кода, т. Е. как
distrolist
создается и какtemp
создается, а также полные определения типов для обоих. Возможно, что типы являются ссылочными типами и они ссылаются на один и тот же экземпляр объекта2. Очень хорошо, я сейчас отредактирую
3. весьма вероятно, что и temp, и distrlist содержат одинаковые экземпляры слияния
4. Да, по-видимому, они делают. Я немного почищу код, большое спасибо
5.Я думаю, вопрос был бы понятнее, если бы вы предоставили примеры данных и объяснили, что это должно на самом деле делать. Похоже, вы пытаетесь сделать следующее: для каждого элемента во временном режиме вы увеличиваете значение элемента
Amount
на суммуAmount
всех элементов вdistroList
, которые имеют то же имя, что иitem
, но другоеProjeid
. Предназначено ли это? Я понятия не имею, что такое бизнес-модель….