Ich habe eine Funktion, mit der ich eine Liste von IDs erhalte, und ich muss eine Liste zurückgeben, die einer Beschreibung entspricht, die der ID zugeordnet ist. Z.B:
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
}
Wenn ich also die SQL dafür selbst erstellen würde, würde ich einfach Folgendes tun (wobei die in-Klausel alle Werte im codeIds-Argument enthält):
Select CodeId, Description FROM CodeTable WHERE CodeId IN ('1a','2b','3')
In Linq to Sql kann ich anscheinend nicht das Äquivalent der "IN" -Klausel finden. Das Beste, was ich bisher gefunden habe (was nicht funktioniert) ist:
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeData.CodeId == "1" || codeData.CodeId == "2"
select codeData;
Das Problem ist, dass ich keine Liste von "ODER" -Klauseln für linq to sql dynamisch generieren kann, da diese zur Kompilierungszeit festgelegt werden.
Wie erreicht man eine where-Klausel, die eine Spalte in einer dynamischen Werteliste mit Linq to Sql überprüft?