преобразовать или преобразовать список <t>в коллекцию EntityCollection <T> - PullRequest
23 голосов
/ 02 марта 2010

Как бы вы конвертировали или разыгрывали List<T> в EntityCollection<T>?

Иногда это происходит при попытке создать с нуля коллекцию дочерних объектов (например, из веб-формы)

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

Ответы [ 3 ]

28 голосов
/ 02 марта 2010

Я предполагаю, что вы говорите о List<T> и EntityCollection<T>, которые используются Entity Framework. Поскольку последний имеет совершенно другое назначение (он отвечает за отслеживание изменений) и не наследует List<T>, прямого приведения нет.

Вы можете создать новый EntityCollection<T> и добавить всех членов списка.

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

К сожалению, EntityCollection<T> не поддерживает ни операцию Assign, ни EntitySet, используемый Linq2Sql, ни перегруженный конструктор, так что вы остались с тем, что я сказал выше.

15 голосов
/ 01 апреля 2012

В одну строку:

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();
0 голосов
/ 24 ноября 2016

LINQ не требуется. Просто позвоните конструктору

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