Voici le méssage d' insulte d' un bug connu d'Entity FrameWork (lien vers la documentation MSDN):
Impossible de créer une valeur constante de type « Type de clôture ». Seuls les types primitifs (« par exemple Int32, String et Guid ») sont pris en charge dans ce contexte.
Ce message à lieu quand on souhaite utiliser une liste d' entités provenant d'EF avec une seconde liste hors contexte EF. Bon, c'est sympathique de connaître la situation dans la quelle se produit cette erreur (d' autant plus que le message n'a pas vraiment grand chose à voir avec le problème), mais comment s' en sortir?
Tout simplement : il faut lier les données hors contexte EF, par exemple utiliser une deux clause from de suite en commençant par la clause from du contexte LinqTo Object... petit exemple pour faire simple avec une liste d' entiers et une liste de personnes présentes dans un contexte EF :
Int32[] ids; // ... return ( from id in ids from p in ContextEf.Personnes where p.IdRight == id select p ).ToArray();
Facile!