NHibernate Criteria中的And, Or
作者:优天网络 日期:2013-05-10 阅读量:1900 次 分享到:
public IList<BoxDao> QueryRelated(TemplateDao[] templates, DataSourceDao[] datasources)
{
    ICriteria criteria 
= this._session.CreateCriteria(typeof(BoxDao));
    Expression.ICriterion exp 
= null;
    exp 
= Expression.Or(Expression.In("Template", templates), Expression.In("Wrapper", templates));
    exp 
= Expression.Or(exp, Expression.In("DataSource", datasources));
    exp 
= Expression.And(exp, Expression.In("State"new  EnumState[] { EnumState.Publish, EnumState.Edit }));
    criteria.Add(exp);

    
return criteria.List<BoxDao>();
}


如果参数templates、datasources都不为null,执行的SQL如下
 

SELECT ...
FROM CMS_BOX this_ 
WHERE ((this_.TEMP_ID in (?p0) or this_.WRAPPER_ID in (?p1)) or this_.DS_ID in<
相关标签: NHibernate Criteria
免责声明:本文章部分图片素材和内容素材来源于网络,仅供学习与参考,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。