嗨,当我使用queryover API时,有没有什么优雅的方式来组合“like”和“or”呢?对于'like‘,有一些类似的东西:
query.WhereRestrictionOn(x=>x.Code).IsLike(codePart)
对于'or‘,我可以这样做:
query.Where( x=>x.Code == codePart || x.Description== codePart)
但是,我如何创建这样的查询:
select * from n where代码如'%abc%‘或说明如'%abc%'
发布于 2010-12-28 05:42:06
query.Where(Restrictions.On<Type>(x => x.Code).IsLike(codePart) ||
Restrictions.On<Type>(x => x.Description).IsLike(codePart))
发布于 2011-01-27 17:11:02
您可以使用NHibernate 析取类以一种更优雅的(IMHO)方式完成此操作:
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)
然后:
query.Where(disjunction)
每个"OR“都是一条单独的指令,如果您想要有条件地添加谓词,这会很有帮助。
发布于 2011-12-06 11:18:21
根据你喜欢的口味,它的另一个版本如下:
query.Where(Restrictions.Disjunction()
.Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart))
.Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart)));
https://stackoverflow.com/questions/4541546
复制相似问题