Tengo una función en la que obtengo una lista de identificadores y necesito devolver una lista que coincida con una descripción asociada con el identificador. P.ej:
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
}
Entonces, si estuviera creando el sql para esto yo mismo, simplemente haría algo como lo siguiente (donde la cláusula in contiene todos los valores en el argumento codeIds):
Select CodeId, Description FROM CodeTable WHERE CodeId IN ('1a','2b','3')
En Linq to Sql, parece que no puedo encontrar el equivalente de la cláusula "IN". Lo mejor que he encontrado hasta ahora (que no funciona) es:
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeData.CodeId == "1" || codeData.CodeId == "2"
select codeData;
El problema es que no puedo generar dinámicamente una lista de cláusulas "O" para linq a sql, porque están configuradas en tiempo de compilación.
¿Cómo se logra una cláusula where que comprueba que una columna está en una lista dinámica de valores usando Linq to Sql?