Nhibernate HQL在查询中的位置

Nhibernate HQL在查询中的位置,nhibernate,hql,castle-activerecord,Nhibernate,Hql,Castle Activerecord,我试图返回一个SimpleQuery列表,该列表查询单个表并在中使用。 我可以用它来工作 return new List<Jobs>( ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids)) ); 返回新列表( ActiveRecordMediator.FindAll(表达式.In(“ServiceId”,id)) ); 然而这真的很慢。所以我想做一些像这样的事情 SimpleQu

我试图返回一个SimpleQuery列表,该列表查询单个表并在中使用。 我可以用它来工作

return new List<Jobs>(
    ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids))
);
返回新列表(
ActiveRecordMediator.FindAll(表达式.In(“ServiceId”,id))
);
然而这真的很慢。所以我想做一些像这样的事情

SimpleQuery<Job> query = 
    new SimpleQuery<Job>(@"from Job as j where ? in (j.ServiceId)", ids);

return new List<Job>(query.Execute());
SimpleQuery=
新的SimpleQuery(@“从作业中作为j where?in(j.ServiceId)”,id);
返回新列表(query.Execute());
然而,我不能让简单的工作。我找不到任何有关这方面的文件,希望有人能提供帮助


谢谢

请查看NHibernate HQL文档

我从您的代码猜测,您正在执行HQL查询,以返回所有作业,其中job.ServiceID位于ID列表中

也许是这样的

IQuery q = s.CreateQuery("from Job as j where j.ServiceId in (:serviceIds)");
q.SetParameterList("serviceIds", ids); 
顺便说一句,你听说过这个项目吗? 下面是使用上述库完成的IN查询的示例。作为使用HQL的一种替代方案,这可能是一件有趣的事情

DetachedCriteria after =
    DetachedCriteria.For<Person>()
        .Add(SqlExpression.In<Person>(p => p.Name, 
          new string[] { "name1", "name2", "name3" }));
DetachedCriteria之后=
DetachedCriteria.For()
.Add(SqlExpression.In)(p=>p.Name,
新字符串[]{“name1”、“name2”、“name3”});

谢谢您的回复。我根据您的回复编辑了我的查询SimpleQuery=new SimpleQuery(@“from Job as j,其中j.SecondName=(:name)和(:ServiceId)”中的ServiceId);SetParameter(“serviceIds”,ids);query.SetParameter(“name”,name);返回新列表(query.Execute());现在唯一的问题是我传递的ID的int数组。数据库中的字段是int类型,如果我在任何字符串字段上使用in,它工作正常,如果我传递一个int值,它工作正常。如何传递数组?谢谢,这可能对你也有用