NHibernate:HQL等价于条件表达式.In()?

NHibernate:HQL等价于条件表达式.In()?,nhibernate,hibernate,hql,criteria,Nhibernate,Hibernate,Hql,Criteria,您将如何在HQL中表达以下条件查询 var idArray = new int[] { 1, 2, 3, 4, 5 }; Session.CreateCriteria(typeof(Foo)) .Add(Expression.In("Id", idArray) .List<Foo>(); var-idArray=newint[]{1,2,3,4,5}; 会话.CreateCriteria(类型化(Foo)) .Add(表达式.In(“Id”,idArray) .L

您将如何在HQL中表达以下条件查询

var idArray = new int[] { 1, 2, 3, 4, 5 };

Session.CreateCriteria(typeof(Foo))
    .Add(Expression.In("Id", idArray)
    .List<Foo>();
var-idArray=newint[]{1,2,3,4,5};
会话.CreateCriteria(类型化(Foo))
.Add(表达式.In(“Id”,idArray)
.List();
我知道HQL中有一个“in”关键字,但据我所知,该关键字用于子查询,而不是“…whereid in(1,2,3,4,5)”之类的东西。如果不是这样,我很乐意接受更正

谢谢/Erik

试试这个:

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>();
var-idArray=newint[]{1,2,3,4,5};
var foos=会话
.CreateQuery(“来自Foo f,其中f.Id位于(:Id)”中)
.SetParameterList(“ID”,idArray)
.List();
试试这个:

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>();
var-idArray=newint[]{1,2,3,4,5};
var foos=会话
.CreateQuery(“来自Foo f,其中f.Id位于(:Id)”中)
.SetParameterList(“ID”,idArray)
.List();
这也有效

ICriteria sc = session.CreateCriteria(typeof(Foo));
sc.Add(Restrictions.In("id",new[] { 1, 2 }));
siteList = sc.List();
session.Close();
这也行

ICriteria sc = session.CreateCriteria(typeof(Foo));
sc.Add(Restrictions.In("id",new[] { 1, 2 }));
siteList = sc.List();
session.Close();