web-dev-qa-db-fra.com

convertir ou convertir une liste <t> en EntityCollection <T>

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'
23
alice7

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é;.

28
Johannes Rudolph

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();
14
David Sherret

Aucun LINQ requis. Il suffit d'appeler le constructeur

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