NHibernate Expression.Like两个领域的标准

时间:2011-03-17 11:07:58

标签: c# .net nhibernate fluent-nhibernate

我有一个Nhibernate对象,它具有Firstname和Surname属性,我希望能够在两个字段上查询(Firstname +“”+ Surname);例如如果搜索词是“John Doe”,那么当John和Doe处于单独的字段时,这将匹配。

我怎样才能实现这一目标? 谢谢!

2 个答案:

答案 0 :(得分:4)

所以我最终选择了:

.Add(Restrictions.Like(Projections.SqlFunction("concat",
        NHibernateUtil.String,
        Projections.Property("Firstname"),
        Projections.Constant(" "),
        Projections.Property("Surname")),
    searchString, MatchMode.Anywhere))

这似乎可行,因为我需要它。

答案 1 :(得分:0)

string firstName = "John";
string lastName = "Doe";

例如,使用LINQ:

Session.Query<User>()
       .Where(u => u.FirstName == firstName || u.Surname == lastName)
       .ToList();

你可以使用QueryOver来实现它,它看起来几乎相同:

Session.QueryOver<User>()
       .Where(u => u.FirstName == firstName || u.Surname == lastName)
       .List();

更新: 我错过了这个问题。

怎么样:

var name = "John Doe";
Session.Query<User>()
       .Where(u => name.Contains(u.FirstName) || name.Contains(u.Surname))
       .ToList();