开发者

convert or cast a List<t> to EntityCollection<T>

开发者 https://www.devze.com 2022-12-21 13:32 出处:网络
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

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

精彩评论

暂无评论...
验证码 换一张
取 消