Как обновить элемент в коллекции с помощью и C # - PullRequest
2 голосов
/ 04 октября 2011

Несколько раз назад я задавал вопрос здесь"Как добавить элемент в коллекцию, используя Linq и C #"

Например, у меня есть такая же коллекция:

      List<Subscription> subscription = new List<Subscription>
       {
           new Subscription{Type = "Trial", Period = 30 },
           new Subscription{Type = "Free", Period = 90 },
           new Subscription{Type = "Paid", Period = 365 }
       };

Теперь я хочу обновить элемент этого списка, используя код C #. Возможно ли это?

Ответы [ 6 ]

1 голос
/ 04 октября 2011

Ваш список подписки содержит 3 ссылки на 3 объекта подписки.Если вы обновите какой-либо из 3 объектов подписки в этом списке (каким-либо образом), то список будет ссылаться на обновленный элемент.

subscription.First(s => s.Period == 30).Trial = "new";

Обновит объект подписки. Список не изменится, но онссылается на тот же объект, который был обновлен

1 голос
/ 04 октября 2011

Вы создаете контекстный менеджер, например dbManager

var subscription = dbManager.Subscriptions.Single(s => s.Type == "Free");
subscription.Period = 120;
dbManager.SaveChanges();
0 голосов
/ 04 октября 2011

Следует отметить, что если бы подписка была типом значения, вам нужно было бы сделать что-то вроде этого:

Subscription updateMe = subscription[0];
updateMe.Period = 40;
subscription[0] = updateMe;

Я бы также отметил, что имена коллекций обычно множественные, поэтому списокназванный subscriptions.Я полагаю, однако, что это соглашение теряет свою ценность, если разработчики, работающие над кодом, являются носителями языка, который не использует такие множественные числа.

0 голосов
/ 04 октября 2011

Кроме того, если вы хотите обновить все элементы в коллекции, вы можете добиться этого следующим образом:

subscription.ForEach(s => s.Period = 30);
0 голосов
/ 04 октября 2011

Чтобы обновить первый элемент в вашем списке на новый период, вы можете сделать это:

subscription[ 0 ].Period = 40;
0 голосов
/ 04 октября 2011

<_ InstanceName> [ItemIndex]. <_ Property> = newValue

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