首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >queryover and (x如'a‘或y如'a')

queryover and (x如'a‘或y如'a')
EN

Stack Overflow用户
提问于 2010-12-28 04:20:32
回答 3查看 18.3K关注 0票数 51

嗨,当我使用queryover API时,有没有什么优雅的方式来组合“like”和“or”呢?对于'like‘,有一些类似的东西:

代码语言:javascript
复制
 query.WhereRestrictionOn(x=>x.Code).IsLike(codePart)

对于'or‘,我可以这样做:

代码语言:javascript
复制
query.Where( x=>x.Code == codePart || x.Description== codePart)

但是,我如何创建这样的查询:

select * from n where代码如'%abc%‘或说明如'%abc%'

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-28 05:42:06

代码语言:javascript
复制
query.Where(Restrictions.On<Type>(x => x.Code).IsLike(codePart) ||
            Restrictions.On<Type>(x => x.Description).IsLike(codePart))
票数 57
EN

Stack Overflow用户

发布于 2011-01-27 17:11:02

您可以使用NHibernate 析取类以一种更优雅的(IMHO)方式完成此操作:

代码语言:javascript
复制
var disjunction= new Disjunction();

disjunction.Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart));
disjunction.Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart));
//(and so on)

然后:

代码语言:javascript
复制
query.Where(disjunction)

每个"OR“都是一条单独的指令,如果您想要有条件地添加谓词,这会很有帮助。

票数 60
EN

Stack Overflow用户

发布于 2011-12-06 11:18:21

根据你喜欢的口味,它的另一个版本如下:

代码语言:javascript
复制
query.Where(Restrictions.Disjunction()
         .Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart))
         .Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart)));
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4541546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档