Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# QueryOver:在Where子句中动态添加IsLike_C#_.net_Nhibernate_Queryover - Fatal编程技术网

C# QueryOver:在Where子句中动态添加IsLike

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

我有一个查询,其中我选择了日志名称以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.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();