Opérateur "IN" à Linq

Je suis en train de convertir un vieux crus de la requête Sql dans Linq avec Entity Framework ici.

Il a été à l'aide de l'opérateur avec une collection d'éléments. La requête a été quelque chose comme ça:

SELECT Members.Name
FROM Members
WHERE Members.ID IN ( SELECT DISTINCT ManufacturerID FROM Products WHERE Active = 1)
ORDER BY Members.Name ASC

Depuis le retour de la sous-requête n'est pas une chaîne unique, mais un ensemble de cordes, je ne peux pas utiliser le String.Contains() méthode.

J'ai pensé à faire quelque chose comme :

var activeProducts = (
from products in db.ProductSet
where product.Active == true
select product.ManufacturerID);

et puis

var activeMembers = (
from member in db.ContactSet
where member.ID.ToString().Contains(activeProducts));

mais il s'arrête à l'contient en disant qu'il a des arguments non valides ... je ne peux pas sélectionner activeProducts.ManufacturerID parce qu'évidemment la convenance n'est pas là, puisqu'il revient un IQueryable...

La ligne de fond de ce que j'essaie de faire ici est de retourner une liste des membres qui ont au moins un produit actif.

Tout soupçon ?

[modifier]

Voici la requête complète de code ... j'ai essayé avec le contient sur la seconde expression, Linq ne semble pas aimer ça :

Server Error in '/' Application.
LINQ to Entities does not recognize the method 'Boolean Contains[String](System.Linq.IQueryable``1[System.String], System.String)' method, and this method cannot be translated into a store expression.

    var activeProduct =(from product in Master.DataContext.ProductSet
                        where product.Active == true
                           && product.ShowOnWebSite == true
                           && product.AvailableDate <= DateTime.Today
                           && ( product.DiscontinuationDate == null || product.DiscontinuationDate >= DateTime.Today )
                        select product.ManufacturerID.ToString() );

    var activeArtists = from artist in Master.DataContext.ContactSet
                        where activeProduct.Contains(artist.ID.ToString())
                        select artist;

    NumberOfArtists = activeArtists.Count();

    artistsRepeater.DataSource = activeArtists;
    artistsRepeater.DataBind();

[Plus de détails]
ManufacturerID est nullable GUID apparemment...

Pour une raison quelconque, le ContactSet classe ne contient aucune référence à des produits, je suppose que je vais devoir faire une requête de jointure, aucun indice ici.

source d'informationauteur Erick