NHibernate: HQL equivalente de Criterios Expression.In ()?
-
22-08-2019 - |
Pregunta
¿Cómo expresar la siguiente consulta Criteria en HQL?
var idArray = new int[] { 1, 2, 3, 4, 5 };
Session.CreateCriteria(typeof(Foo))
.Add(Expression.In("Id", idArray)
.List<Foo>();
Soy consciente de que hay una "en" palabra clave en HQL, pero como yo lo entiendo esa palabra clave se utiliza con subconsultas en lugar de algo así como" ... donde id en (1, 2, 3, 4, 5)" o tal. Si ese no es el caso, yo con mucho gusto aceptará correcciones.
Gracias / Erik
Solución
Prueba esto:
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>();
Otros consejos
Esto funciona también
ICriteria sc = session.CreateCriteria(typeof(Foo));
sc.Add(Restrictions.In("id",new[] { 1, 2 }));
siteList = sc.List();
session.Close();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow