我对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 };
我还没有弄清楚如何更新标准以允许列表。有没有人有这方面的参考?
答案 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();