bud*_*ddy 50 nhibernate queryover
嗨当我使用查询转换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%'
pso*_*usa 59
您可以使用NHibernate Disjunction类以更优雅(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)
Run Code Online (Sandbox Code Playgroud)
然后:
query.Where(disjunction)
Run Code Online (Sandbox Code Playgroud)
每个"OR"是一个单独的指令,如果您想要有条件地添加谓词,这将有所帮助.
Die*_*hon 57
query.Where(Restrictions.On<Type>(x => x.Code).IsLike(codePart) ||
Restrictions.On<Type>(x => x.Description).IsLike(codePart))
Run Code Online (Sandbox Code Playgroud)
您可能会喜欢的另一个版本如下:
query.Where(Restrictions.Disjunction()
.Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart))
.Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17893 次 |
| 最近记录: |