2009-07-22 127 views
8

我已经开始掌握NHibernate了。我试图执行一个查询,从表中选择所有记录,但使用ID的排除过滤器列表,例如。除了这些带有这些ID值的产品外,还可以给我所有产品NHibernate - 使用ICriteria实现“NOT IN”查询

通常在直接的T-SQL中,我将ID传递给一个NOT IN子句中,如下所示。

SELECT * 
FROM Products 
WHERE ProductId NOT IN (1,5,9,23,45) 

如何在NHibernate中使用ICriteria或HQL(但最好是ICriteria)来做到这一点?

回答

23

尝试

.Add(Expression.Not(Expression.In("ProductID", new int[] { 1, 5, 9, 23, 45 }))) 
+0

真棒,这完美地工作,谢谢。这里是我最终实现的完整代码... query.Add(Expression.Not(Expression.In(“ProductType.Id”,excludedProductTypeIds.ToArray()))); 我看到'Not'和'In'方法,但并没有想到像那样链接它们。 – 2009-07-22 23:18:44

相关问题