Mam funkcję, w której otrzymuję listę identyfikatorów i muszę zwrócić listę pasującą do opisu, który jest powiązany z identyfikatorem. Na przykład:
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
}
Więc gdybym sam tworzył sql dla tego, po prostu zrobiłbym coś podobnego do następującego (gdzie klauzula in zawiera wszystkie wartości w argumencie codeIds):
Select CodeId, Description FROM CodeTable WHERE CodeId IN ('1a','2b','3')
W Linq do Sql nie mogę znaleźć odpowiednika klauzuli „IN”. Najlepsze, jakie do tej pory znalazłem (które nie działa) to:
var foo = from codeData in channel.AsQueryable<CodeData>()
where codeData.CodeId == "1" || codeData.CodeId == "2"
select codeData;
Problem polega na tym, że nie mogę dynamicznie wygenerować listy klauzul „OR” dla linq do sql, ponieważ są one ustawiane w czasie kompilacji.
Jak można osiągnąć klauzulę WHERE, która sprawdza, czy kolumna znajduje się na dynamicznej liście wartości przy użyciu Linq do Sql?