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
>
();
}