2010-11-10 43 views
0

我是相当新的NHibernate和我试图修改当前仅使用一个整数一个标准,使用类似(简体):NHibernate的ICritery添加IEnumerable <int>?

int attributeId = 5; 
Attribute attributeAlias = null; 

var criteria = DetachedCriteria<Asset>.Create(() => attributeAlias) 
.Add(() => attributeAlias.Id == attributeId) 

但我想改变它,让路过的属性ID列表,与此类似。

IEnumerable<int> attributeIds = new List<int> () { 5, 6, 7, 8 }; 

我还没有弄清楚如何更新标准以允许列表。有没有人有这样做的任何参考?

回答

4
int[] attributeIds = { 5, 6, 7, 8 }; 

ICriteria criteria = Session.CreateCriteria(); 
criteria.Add(Expression.In("Id", attributeIds)); //this is the important part 
criteria.List(); 

更新:从什么Zenox也贡献:

ICriteria criteria = Session.CreateCriteria(); 
criteria.Add(Restrictions.In (LambdaProjection.Property (() => attributeAlias.Id), attributeIds .ToArray ())); 
criteria.List(); 
+0

谢谢,我也只是发现了:“Restrictions.In(LambdaProjection.Property(()=> attributeAlias.Id),attributeIds .ToArray())'也是可行的。 – Kyle 2010-11-10 15:00:12