嗨当我使用查询转换API时,是否有任何优雅的方式组合'喜欢'和'或'?对于'喜欢'有类似的东西:
query.WhereRestrictionOn(x=>x.Code).IsLike(codePart)
Run Code Online (Sandbox Code Playgroud)
对于'或'我可以做类似的事情:
query.Where( x=>x.Code == codePart || x.Description== codePart)
Run Code Online (Sandbox Code Playgroud)
但是如何创建这样的查询:
select*from n,其中代码如'%abc%'或描述如'%abc%'
我想在我的基础存储库类中添加一个方法,允许我使用LIKE表达式,但我不太清楚如何解决这个问题.我想创建一个通用方法,查看传入的表达式树,并在传入的字符串值中查找通配符.然后,它将相应地生成QueryOver语句.
我目前有以下内容:
public IList<T> FindAll(Expression<Func<T, bool>> criteria, char wildCard)
{
return SessionFactory.GetCurrentSession()
.QueryOver<T>()
.Where(criteria)
.List();
}
Run Code Online (Sandbox Code Playgroud)
显然,困难的部分尚未到来.我需要查看表达式树并QueryOver动态构建查询.寻找关于如何继续这一点的一些指示.或者我只是在这里浪费时间,应该在我的存储库中创建处理LIKE查询的单个方法?
理想情况下,我想区分以下内容:
所以生成的查询将是:
我正在使用NHibernate 3.0 IQueryOver 进行搜索,我在其中搜索了一个关键字.我需要在字符串中搜索它是否是字符串的一部分,
Query().Where(e => e.Name.Contains(keyword)).List();
Run Code Online (Sandbox Code Playgroud)
但这并没有像预期的那样完成工作.如何进行这样的搜索?