转换或转换列表到EntityCollection

c# collections entity-framework

您如何将List<T>转换或转换为EntityCollection<T>

有时,当尝试从头开始创建子对象的集合(例如,从Web表单)时,会发生这种情况

 Cannot implicitly convert type 
'System.Collections.Generic.List' to 
'System.Data.Objects.DataClasses.EntityCollection'

一般承认的答案

我假设您正在讨论实体框架使用的List<T>EntityCollection<T> 。由于后者具有完全不同的目的(它负责更改跟踪)并且不继承List<T> ,因此没有直接强制转换。

您可以创建一个新的EntityCollection<T>并添加所有List成员。

var entityCollection = new EntityCollection<TEntity>();
foreach (var item m in list)
{
  entityCollection.Add(m);
}

不幸的是, EntityCollection<T>既不支持Assign操作,也不支持Linq2Sql使用的EntitySet,也不支持重载的构造函数,所以这就是我在上面所说的内容。


热门答案

在一行中:

list.ForEach(entityCollection.Add);

扩展方法:

public static EntityCollection<T> ToEntityCollection<T>(this List<T> list) where T : class
{
    EntityCollection<T> entityCollection = new EntityCollection<T>();
    list.ForEach(entityCollection.Add);
    return entityCollection;
}

使用:

EntityCollection<ClassName> entityCollection = list.ToEntityCollection();



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因