2010-11-10 45 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