流利的Nhibernate QueryOver使用"或"和"和条款"

时间:2015-05-08 20:05:21

标签: c# fluent-nhibernate nhibernate-criteria

假设我有以下域模型:

 public class Fund : EntityBase
    {
        public virtual string Name { get; set; }
        public virtual IList<FundDetail> FundDetails { get; set; }
        public Fund()
        {
            FundDetails=new List<FundDetail>();

        }
    }
  public class FundDetail : EntityBase
    {
        public virtual string Symbol { get; set; }
        public virtual Fund Fund { get; set; }
    }

现在我想获得基金名称或基金详情ymbol包含一些字符串值的所有资金:

 var funds = _fundRepository.QueryOver()
                    .Left.JoinAlias(c => c.FundDetails, () => fundDetail)
                    .Future().ToList();

如何使用&#34;或&#34; QueryOver中的子句?所以我需要查询所有资金:

string filterVal="someval";
c=>c.Name.Lower().Contains(filterVal) or fundDetail.Symbol.Lower().Contains9filterVal

感谢。

1 个答案:

答案 0 :(得分:0)

您可以添加对Where方法的调用:

string filterVal = "someval";
var funds = _fundRepository.QueryOver<Fund>().
                .Where(c => c.Name.Lower().Contains(filterVal) ||
                           c.fundDetail.Symbol.Lower().Contains(filterVal))
                .Left.JoinAlias(c => c.FundDetails, () => fundDetail)
                .Future().ToList();

查看this article以了解有关QueryOver的所有其他选项。