将List <t>转换或转换为EntityCollection <t> </t> </t>

时间:2010-03-02 16:17:53

标签: c# entity-framework collections

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

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

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

3 个答案:

答案 0 :(得分:28)

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

您可以创建新的EntityCollection<T>并添加所有列表成员。

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

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

答案 1 :(得分:15)

在一行中:

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();

答案 2 :(得分:0)

不需要LINQ。只需致电the constructor

List<Entity> myList = new List<Entity>();
EntityCollection myCollection = new EntityCollection(myList);