J'ai une fonction où j'obtiens une liste d'identifiants et je dois renvoyer une 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 créais moi-même le sql pour cela, 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". Le meilleur que j'ai trouvé jusqu'à présent (qui ne fonctionne pas) est:
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeData.CodeId == "1" || codeData.CodeId == "2"
select codeData;
Le problème étant que je ne peux pas générer dynamiquement une liste de clauses "OR" pour linq à sql, car elles sont définies au moment de la compilation.
Comment accomplir une clause where qui vérifie qu'une colonne est dans une liste dynamique de valeurs en utilisant Linq to Sql?