如何使用和C#更新集合中的项目

时间:2011-10-04 14:11:47

标签: c# entity-framework generics

前几次我问了一个问题here“如何使用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 个答案:

答案 0 :(得分:1)

您创建了一个上下文管理器,例如dbManager

var subscription = dbManager.Subscriptions.Single(s => s.Type == "Free");
subscription.Period = 120;
dbManager.SaveChanges();

答案 1 :(得分:1)

您的订阅列表包含3个对3个订阅对象的引用。如果您更新该列表中的3个订阅对象中的任何一个(通过任何方式),则列表将引用更新的元素。

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

将更新订阅对象..列表不会更改,但它引用已更新的同一对象

答案 2 :(得分:0)

&lt; _InstanceName&gt; [ItemIndex]。&lt; _property&gt; = newValue

答案 3 :(得分:0)

要将列表中的第一项更新为新时段,您可以执行以下操作:

subscription[ 0 ].Period = 40;

答案 4 :(得分:0)

此外,如果您希望更新集合中的所有项目,您可以这样做,

subscription.ForEach(s => s.Period = 30);

答案 5 :(得分:0)

应该注意的是,如果Subscription是一种值类型,您需要执行以下操作:

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

我还注意到集合名称通常是复数,因此列表应该命名为subscriptions。但是,我认为,如果开发代码的开发人员使用不使用此类复数的语言的母语者,则此约定会失去其价值。