Je cherche à construire l'expression Lambda comme ci-dessous
IQueryable<Object> queryEntity =
_db.Projects.Where(Project=>Project.Id.IN(1,2,3,4));
Je ne trouve pas d'opérateur IN
dans l'expression Lambda.
Quelqu'un a des suggestions?
Utilisez IEnumerable.Contains pour cela.
var idList = new[] { 1, 2, 3, 4 };
IQueryable<Object> queryEntity =
_db.Projects.Where(Project => idList.Contains(Project.Id));
Vous pouvez bien sûr construire idList
inline.
Il n'y a pas d'opérateur in, mais il y a un contient. Inversez simplement votre logique:
IQueryable<Object> queryEntity = _db.Projects.Where(Project=>(new []{1,2,3,4}).Contains(Project.Id));
Vous recherchez IEnumerable.Contains
_db.Projects.Where(Project => list.Contains(Project.Id));
vous pouvez écrire le vôtre
public static bool In(this object item, IEnumerable list)
{
return list.Contains(item);
}
public static bool In(this object item, params object[] list)
{
return item.In(list);
}
pseudocode basé sur Anders solution votée.
Exemple de données StateMints:
Neuf, Lieu
1.O, Nouvelle-Orléans, Louisiane
2.W, West Point, New York
3.D, Denver, Colorado
Ceci est mon code jusqu'à présent:
List<string> mints = new List<string> { "C", "CC", "D", "M", "O", "P", "S", "W" };
var locations = StateMints.Where(p => mints.Contains(p.Mint.ToUpper())).Select(p => p.Location).ToList();