NHibernate: HQL equivalente dei criteri Expression.In ()?
-
22-08-2019 - |
Domanda
Come vorresti esprimere la seguente query Criteri in HQL?
var idArray = new int[] { 1, 2, 3, 4, 5 };
Session.CreateCriteria(typeof(Foo))
.Add(Expression.In("Id", idArray)
.List<Foo>();
Sono consapevole che c'è un "in" parola chiave in HQL, ma se ho capito bene quella parola chiave è per l'utilizzo con sottoquery, piuttosto che qualcosa come" ... dove Id a (1, 2, 3, 4, 5)" o tale. Se questo non è il caso, io accetto volentieri correzioni.
Grazie / Erik
Soluzione
Prova questo:
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>();
Altri suggerimenti
Questo funziona troppo
ICriteria sc = session.CreateCriteria(typeof(Foo));
sc.Add(Restrictions.In("id",new[] { 1, 2 }));
siteList = sc.List();
session.Close();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow