您如何将List<T>
转换为EntityCollection<T>
?
有时在尝试从头开始创建子对象集合(例如,从Web表单)时会发生这种情况
Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Data.Objects.DataClasses.EntityCollection'
答案 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);