Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用和C更新集合中的项#_C#_Entity Framework_Generics - Fatal编程技术网

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

C# 如何使用和C更新集合中的项#,c#,entity-framework,generics,C#,Entity Framework,Generics,几天前,我问了一个问题“如何使用Linq和C在集合中添加项目” 例如,我有相同的收藏: List<Subscription> subscription = new List<Subscription> { new Subscription{Type = "Trial", Period = 30 }, new Subscription{Type = "Free", Period = 90 },

几天前,我问了一个问题“如何使用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 }
       };
列表订阅=新列表
{
新订阅{Type=“试用”,期间=30},
新订阅{Type=“Free”,期间=90},
新订阅{Type=“Paid”,期间=365}
};

现在我想用C代码更新这个列表中的一个项目。可能吗?

您可以创建一个contextmanager,例如
dbManager

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

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

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

将更新订阅对象。。列表不会更改,但它引用了已更新的同一对象。=newValue要将列表中的第一个项目更新为新期间,可以执行以下操作:

subscription[ 0 ].Period = 40;

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

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

需要注意的是,如果订阅是一种值类型,则需要执行以下操作:

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

我还要注意,集合名称通常是复数,因此列表应命名为
subscriptions
。然而,我认为,如果编写代码的开发人员以不使用复数形式的语言为母语,那么这种约定就失去了价值。

subscription[0]。Type=“changedtypeofficefirstitem”;更新项目非常简单,只需从列表中获取项目,然后根据需要执行任何更新。是否有特定的方式更新特定项目?@Reniuz这仅在订阅为引用类型时有效。诚然,如果订阅是一种值类型,这会很奇怪,但应该注意。