C# QueryOver:在Where子句中动态添加IsLike
我有一个查询,其中我选择了日志名称以D或F开头的日志记录(使用通配符)C# QueryOver:在Where子句中动态添加IsLike,c#,.net,nhibernate,queryover,C#,.net,Nhibernate,Queryover,我有一个查询,其中我选择了日志名称以D或F开头的日志记录(使用通配符) conv.InnerTransaction.Session.QueryOver() .其中(l=>l.DateTime>\U DateTime) .及( l=>l.Name.IsLike(“D%”)| | l.Name.IsLike(“F%”) ) 相反,我希望名称搜索是动态使用列表中的值。如何做到这一点 我试过这样的方法: var query = conv.InnerTransaction.Session.QueryOv
conv.InnerTransaction.Session.QueryOver()
.其中(l=>l.DateTime>\U DateTime)
.及(
l=>l.Name.IsLike(“D%”)| | l.Name.IsLike(“F%”)
)
相反,我希望名称搜索是动态使用列表中的值。如何做到这一点
我试过这样的方法:
var query = conv.InnerTransaction.Session.QueryOver<Log>()
.Where(l => l.DateTime > _datetime);
foreach (var name in _names)
{
query = query.And(l => l.Name.IsLike(name));
}
var query=conv.InnerTransaction.Session.QueryOver()
其中(l=>l.DateTime>\u DateTime);
foreach(变量名称在_名称中)
{
query=query.And(l=>l.Name.IsLike(Name));
}
但这将导致列表中每个名称都有多个AND语句,而它只需要是OR。您是否尝试过
析取?我曾经有过类似的需求,但我不得不使用连接词<代码>析取
将或
多个条件组合在一起
var disjunction = new Disjunction();
var query = Session.QueryOver<Log>().Where(l => l.DateTime > _datetime);
foreach (var name in _names)
{
disjunction.Add(Restrictions.On<Log>(log => log.Name).IsLike(name));
}
var queryResult = query.Where(disjunction).List<Log>();
var析取=新析取();
var query=Session.QueryOver()。其中(l=>l.DateTime>\u DateTime);
foreach(变量名称在_名称中)
{
disjunction.Add(Restrictions.On(log=>log.Name).IsLike(Name));
}
var queryResult=query.Where(析取).List();
你试过析取吗?我曾经有过类似的需求,但我不得不使用连接词<代码>析取
将或
多个条件组合在一起
var disjunction = new Disjunction();
var query = Session.QueryOver<Log>().Where(l => l.DateTime > _datetime);
foreach (var name in _names)
{
disjunction.Add(Restrictions.On<Log>(log => log.Name).IsLike(name));
}
var queryResult = query.Where(disjunction).List<Log>();
var析取=新析取();
var query=Session.QueryOver()。其中(l=>l.DateTime>\u DateTime);
foreach(变量名称在_名称中)
{
disjunction.Add(Restrictions.On(log=>log.Name).IsLike(Name));
}
var queryResult=query.Where(析取).List();