J'ai une fonction dans laquelle je reçois une liste d'identifiants et je dois renvoyer la liste correspondant à une description associée à l'identifiant. Par exemple :
public class CodeData
{
string CodeId {get; set;}
string Description {get; set;}
}
public List<CodeData> GetCodeDescriptionList(List<string> codeIDs)
//Given the list of institution codes, return a list of CodeData
//having the given CodeIds
}
Donc, si je devais créer moi-même le sql pour cette opération, je ferais simplement quelque chose comme ce qui suit (où la clause in contient toutes les valeurs de l'argument codeIds) :
Select CodeId, Description FROM CodeTable WHERE CodeId IN ('1a','2b','3')
Dans Linq to Sql, je n'arrive pas à trouver l'équivalent de la clause "IN". La meilleure que j'ai trouvée jusqu'à présent (qui ne fonctionne pas) est la suivante :
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeData.CodeId == "1" || codeData.CodeId == "2"
select codeData;
Le problème est que je ne peux pas générer dynamiquement une liste de clauses "OR" pour linq to sql, car elles sont définies au moment de la compilation.
Comment réaliser une clause where qui vérifie qu'une colonne se trouve dans une liste dynamique de valeurs en utilisant Linq to Sql ?