convert or cast a List<t> to EntityCollection<T>
How would you to convert or cast a List<T>
to EntityCollection<T>
?
Sometimes this occurs when trying to create 'from scra开发者_JS百科tch' a collection of child objects (e.g. from a web form)
Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Data.Objects.DataClasses.EntityCollection'
I assume you are talking about List<T>
and EntityCollection<T>
which is used by the Entity Framework. Since the latter has a completely different purpose (it's responsible for change tracking) and does not inherit List<T>
, there's no direct cast.
You can create a new EntityCollection<T>
and add all the List members.
var entityCollection = new EntityCollection<TEntity>();
foreach (var item m in list)
{
entityCollection.Add(m);
}
Unfortunately EntityCollection<T>
neither supports an Assign operation as does EntitySet used by Linq2Sql nor an overloaded constructor so that's where you're left with what I stated above.
In one line:
list.ForEach(entityCollection.Add);
Extension method:
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;
}
Use:
EntityCollection<ClassName> entityCollection = list.ToEntityCollection();
No LINQ required. Just call the constructor
List<Entity> myList = new List<Entity>();
EntityCollection myCollection = new EntityCollection(myList);
精彩评论