Comment ajouter dynamiquement OU de l'exploitant d'clause where dans LINQ

J'ai une variable de taille de tableau de chaînes de caractères, et je suis en train d'en programmant boucle à travers le tableau et le match de toutes les lignes dans un tableau où la colonne "Tags" contient au moins une des chaînes dans le tableau. Voici le pseudo-code:

 IQueryable<Songs> allSongMatches = musicDb.Songs; //all rows in the table

Je peut facilement effectuer une requête sur cette table de filtrage sur un ensemble fixe de chaînes, comme ceci:

 allSongMatches=allSongMatches.Where(SongsVar => SongsVar.Tags.Contains("foo1") || SongsVar.Tags.Contains("foo2") || SongsVar.Tags.Contains("foo3"));

Toutefois, cela ne fonctionne pas (j'obtiens l'erreur suivante: "Une expression lambda avec une déclaration corps ne peut pas être convertie en une arborescence d'expression")

 allSongMatches = allSongMatches.Where(SongsVar =>
     {
       bool retVal = false;
       foreach(string str in strArray)
       {
         retVal = retVal || SongsVar.Tags.Contains(str);
       }
       return retVal;
     });

Quelqu'un peut me montrer la bonne stratégie pour accomplir cette? Je suis encore nouveau dans le monde de LINQ 🙂

InformationsquelleAutor | 2009-04-23