代码之家  ›  专栏  ›  技术社区  ›  alice7

将列表转换或强制转换为EntityCollection<t>

  •  23
  • alice7  · 技术社区  · 14 年前

    如何转换或铸造 List<T> EntityCollection<T> ?

    有时,当试图“从头开始”创建子对象集合(例如,从Web窗体)时,会发生这种情况。

     Cannot implicitly convert type 
    'System.Collections.Generic.List' to 
    'System.Data.Objects.DataClasses.EntityCollection'
    3 回复  |  直到 8 年前
        1
  •  28
  •   Johannes Rudolph    14 年前

    我想你在说 List<T> EntityCollection<T> 由实体框架使用。因为后者的目的完全不同(它负责变更跟踪),并且不继承 列表& T; 没有直接演员。

    您可以创建一个新的 实体集合<t> 并添加所有列表成员。

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

    不幸地 实体集合<t> 既不支持像linq2sql使用的entityset那样的赋值操作,也不支持重载的构造函数,所以这就是我上面所说的留给您的地方。

        2
  •  14
  •   David Sherret    10 年前

    在一行中:

    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();
    
        3
  •  0
  •   Tim Partridge    8 年前

    不需要LINQ。只要打电话 the constructor

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