我有一個Nhibernate對象,它具有屬性Firstname和Surname,並且我希望能夠在兩個字段(Firstname +「」+ Surname)上查詢;例如如果搜索項是「John Doe」,當John和Doe處於不同的字段時,這將匹配。在兩個字段上的NHibernate Expression.Like標準
我該如何做到這一點? 謝謝!
我有一個Nhibernate對象,它具有屬性Firstname和Surname,並且我希望能夠在兩個字段(Firstname +「」+ Surname)上查詢;例如如果搜索項是「John Doe」,當John和Doe處於不同的字段時,這將匹配。在兩個字段上的NHibernate Expression.Like標準
我該如何做到這一點? 謝謝!
所以我結束了去:
.Add(Restrictions.Like(Projections.SqlFunction("concat",
NHibernateUtil.String,
Projections.Property("Firstname"),
Projections.Constant(" "),
Projections.Property("Surname")),
searchString, MatchMode.Anywhere))
這似乎工作,因爲我需要它。
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();
這不是我正在尋找的內容,輸入搜索字符串在單個術語中是「John Doe」,因此它需要與連接字段進行匹配。謝謝。 – RSlaughter 2011-03-17 11:26:36
糟糕。對於那個很抱歉 :)。在我的回覆中添加了一個更新 – psousa 2011-03-17 11:29:07
可能更適合.split字符串並將它們搜索爲部分。 – 4imble 2011-03-17 11:46:01