_databaseContext.Names.Where(x => strings.Contains(x.name) && specialID == 1);
Si votre liste de chaînes est unique, l'utilisation peut utiliser HashSet<>
au lieu de List<>
. Je pense que cela vous donnera de meilleures performances.
HashSet<string> hs = new HashSet<string> { "test1", "test2", "etc" };
_databaseContext.Names.Where(x => hs.Contains(x.name) && specialID == 1);
EDIT: +1 à Alexei Levenkov pour pointer OUT- Exists
causera des problèmes, devrait utiliser Contains
à la place. En outre, vérifié la même requête générée pour List
ainsi que HashSet
donc dans le cas où vous souhaitez interroger sur le serveur, peu importe si vous utilisez List
ou HashSet
.
La requête générée sera quelque chose comme.
Select [name], [other columns]
From Names
Where [name] IN (N'test1', N'test2', N'etc')
Cependant, en supposant specialID
est variable locale, il va générer une requête dynamique similaire ci-dessus, mais aussi passer sa valeur à SQL Server. Cette requête est exécutée à l'aide de sp_executesql
.
Quel est le problème ou la question? – Amy
@Amy il y a un problème dans sa clause where bien que je ne sais pas si c'est son problème. – evanmcdonnal
Consultez http://stackoverflow.com/questions/4172195/mysql-like-multiple-values (aussi pour MySQL) pour voir quel type de requête vous pourriez avoir besoin (conditions OR'ed). –