NHibernate ICritery添加IEnumerable <int>?</int>

时间:2010-11-10 14:53:40

标签: .net nhibernate

我对NHibernate相当新,我正在尝试使用类似(简化)的东西来修改当前需要一个整数的条件:

int attributeId = 5;
Attribute attributeAlias = null;

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

但是我想改变它以允许传入一个attributeIds列表,类似于此。

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

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

1 个答案:

答案 0 :(得分: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();