Подтвердить что ты не робот

Конвертировать или лить List <t> в EntityCollection <T>

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

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

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

Ответ 1

Я предполагаю, что вы говорите о 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> не поддерживает операцию присваивания, как EntitySet, используемую Linq2Sql, или перегруженный конструктор, так что, когда вы остаетесь с тем, что я сказал выше.

Ответ 2

В одной строке:

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

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

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