Ho una funzione in cui ottengo un elenco di ID e devo restituire un elenco corrispondente a una descrizione associata all'ID. Per esempio:
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
}
Quindi, se stessi creando lo sql per questo, farei semplicemente qualcosa di simile al seguente (dove la clausola in contiene tutti i valori nell'argomento codeIds):
Select CodeId, Description FROM CodeTable WHERE CodeId IN ('1a','2b','3')
In Linq a Sql non riesco a trovare l'equivalente della clausola "IN". Il migliore che ho trovato finora (che non funziona) è:
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeData.CodeId == "1" || codeData.CodeId == "2"
select codeData;
Il problema è che non posso generare dinamicamente un elenco di clausole "OR" da linq a sql, perché sono impostate in fase di compilazione.
Come si realizza una clausola where che controlla che una colonna sia in un elenco dinamico di valori utilizzando Linq to Sql?