Конвертировать или лить List <t> в EntityCollection <T>
Как бы вы конвертировали или отбрасывали List<T>
в EntityCollection<T>
?
Иногда это происходит при попытке создать "с нуля" коллекцию дочерних объектов (например, из веб-формы)
Cannot implicitly convert type
'System.Collections.Generic.List' to
'System.Data.Objects.DataClasses.EntityCollection'
Ответы
Ответ 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);