私のプロジェクトでは、次のような基準を作成しようとしています。
ICriteria criteria = session.CreateCriteria(typeof(Orders), typeof(Orders).Name);
if (param != null)
{                       
    if (param[1] != "System")
    {
        for (int index = 0; index < param.Length - 1; index++)
        {
            if (!string.IsNullOrEmpty(param[index]))
            {                                
                criteria.Add(Expression.Eq(
                    "RealizationPoint", 
                    CommonUtils.GetNameRealizationPointById(param[index])));
            }
        }
    }
    if (param[1] != "System" && param2 != null && 
        !string.IsNullOrEmpty(param2[0]))
    {
        for (int index = 0; index < param2.Length - 1; index++)
        {
            if (!string.IsNullOrEmpty(param2[index]))
            {
                criteria.Add(Expression.Eq(
                    "RealizationPoint", 
                    CommonUtils.GetNameRealizationPointById(param2[index])));
            }
        }
     }
 }
para1、param2:string [] param1、string[]param2。式stayANDの間の結果、ORが必要です。