NHibernate: HQL équivalent des critères Expression.In ()?
-
22-08-2019 - |
Question
Comment vous exprimer les critères suivants requête dans HQL?
var idArray = new int[] { 1, 2, 3, 4, 5 };
Session.CreateCriteria(typeof(Foo))
.Add(Expression.In("Id", idArray)
.List<Foo>();
Je suis au courant qu'il ya un « dans » mot-clé dans HQL, mais si je comprends bien ce mot-clé est à utiliser avec les sous-requêtes plutôt que quelque chose comme » ... où Id dans (1, 2, 3, 4, 5) » ou tel. Si ce n'est pas le cas, je l'accepterai volontiers les corrections.
Merci / Erik
La solution
Essayez ceci:
var idArray = new int[] { 1, 2, 3, 4, 5 };
var foos = Session
.CreateQuery("from Foo f where f.Id in (:ids)")
.SetParameterList("ids", idArray)
.List<Foo>();
Autres conseils
Cela fonctionne aussi
ICriteria sc = session.CreateCriteria(typeof(Foo));
sc.Add(Restrictions.In("id",new[] { 1, 2 }));
siteList = sc.List();
session.Close();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow