ICriteria.Add like OR

本文关键字:OR like Add ICriteria | 更新日期: 2023-09-27 18:07:43

我有以下代码:

foreach (CheckedListBoxItem item in cbAttributes.Items)
    {
        if (item.CheckState == CheckState.Checked)
            {
               if ((string)item.Value == "Category" || (string)item.Value == "Kgs" || (string)item.Value == "Mks" || (string)item.Value == "Author")
                    {
                        var alias = item.Value.ToString().Substring(0, 1);
                        criteria.CreateAlias(item.Value.ToString(), alias);
                        criteria.Add(Expression.Like(alias + ".Name", "%" + meTextToFind.Text + "%"));
                    }                       
            }
    }

循环后的条件如下:

C.Name like %text% AND K.Name like %text%

问题是我需要OR而不是AND。我该怎么做呢?
PS. Nhibernate版本为1.2.1.400.

ICriteria.Add like OR

Expression.Or(Expression.Like("param", param), Expression.Like("param", param))

如果你需要Or语句中多于2个表达式,请查看此帖子(使用Disjunction)

这里描述:如何为NHibernate创建OR语句?

.Add(
  Expression.Disjunction()
    .Add(criteria)
    .Add(other_criteria)
)