代码之家  ›  专栏  ›  技术社区  ›  Kyle

nhibernate icritery add ienumerable<int>?

  •  0
  • Kyle  · 技术社区  · 14 年前

    我对nhibernate还比较陌生,我正在尝试修改一个标准,该标准当前采用一个整数,使用类似(简化)的方法:

    int attributeId = 5;
    Attribute attributeAlias = null;
    
    var criteria = DetachedCriteria<Asset>.Create(() => attributeAlias)
    .Add(() => attributeAlias.Id == attributeId )
    

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

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

    我还没有弄清楚如何更新允许列表的条件。有人有做这件事的参考资料吗?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Pedro    14 年前
    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();