Comment voulez-vous convertir ou convertir un List<T>
en EntityCollection<T>
?
Parfois, cela se produit lorsque vous essayez de créer "à partir de zéro" une collection d'objets enfants (par exemple, à partir d'un formulaire Web).
Impossible de convertir implicitement le type 'System.Collections.Generic.List' en 'System.Data.Objects.DataClasses.EntityCollection'
Je suppose que vous parlez de List<T>
et EntityCollection<T>
qui est utilisé par Entity Framework. Ce dernier ayant un objectif complètement différent (responsable du suivi des modifications) et n'héritant pas de List<T>
, il n'y a pas de diffusion directe.
Vous pouvez créer un nouveau EntityCollection<T>
et ajouter tous les membres de la liste.
var entityCollection = new EntityCollection<TEntity>();
foreach (var item m in list)
{
entityCollection.Add(m);
}
Malheureusement, EntityCollection<T>
ne prend pas en charge une opération Assign comme EntitySet utilisé par Linq2Sql, ni un constructeur surchargé;.
En une ligne:
list.ForEach(entityCollection.Add);
Méthode d'extension:
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;
}
Utilisation:
EntityCollection<ClassName> entityCollection = list.ToEntityCollection();
Aucun LINQ requis. Il suffit d'appeler le constructeur
List<Entity> myList = new List<Entity>();
EntityCollection myCollection = new EntityCollection(myList);