Nhibernate 根据方法参数添加限制

Nhibernate 根据方法参数添加限制,nhibernate,queryover,Nhibernate,Queryover,我有办法 List<MyType> DoQuery(bool FilterWeek) { var result = session.QueryOver<MyType>() .Where (r => r.isValid == 1 && r.value1 == 2

我有办法

List<MyType> DoQuery(bool FilterWeek) {  

    var result = session.QueryOver<MyType>()  
                        .Where (r => r.isValid == 1  
                                && r.value1 == 2
                                && r.name == "XYZ"
                                && [...etc, more columns are used...]  
                               ) 
                        // how do I go on from this point? 
}  
List-DoQuery(bool-FilterWeek){
var result=session.QueryOver()
.其中(r=>r.isValid==1
&&r.value1==2
&&r.name==“XYZ”
&&[…等等,使用更多列…]
) 
//从这一点开始我该怎么做?
}  
如果FilterWeek参数为true,我想在Where条件中添加一个额外的“&&r.xyz==1”子句。如果FilterWeek为false,则完成查询

我该怎么做?

这个:

if (FilterWeek)
    result = result.Where(r => r.xyz ==1);

//...whenever you're done, execute the query using List() or SingleOrDefault()
List<MyType> DoQuery(bool FilterWeek) {  

        var result = session.QueryOver<MyType>()  
                            .Where (r => r.isValid == 1  
                                    && r.value1 == 2
                                    && r.name == "XYZ"
                                    && [...etc, more columns are used...]  
                                   );

        if(FilterWeek)
           result.Where(x => x.Whatever == 1)

        //the query won't get executed until here
        result.List();
    }  
List-DoQuery(bool-FilterWeek){
var result=session.QueryOver()
.其中(r=>r.isValid==1
&&r.value1==2
&&r.name==“XYZ”
&&[…等等,使用更多列…]
);
如果(筛选周)
结果。其中(x=>x.Whatever==1)
//在此之前,查询不会执行
result.List();
}  
这是:

List<MyType> DoQuery(bool FilterWeek) {  

        var result = session.QueryOver<MyType>()  
                            .Where (r => r.isValid == 1  
                                    && r.value1 == 2
                                    && r.name == "XYZ"
                                    && [...etc, more columns are used...]  
                                   );

        if(FilterWeek)
           result.Where(x => x.Whatever == 1)

        //the query won't get executed until here
        result.List();
    }  
List-DoQuery(bool-FilterWeek){
var result=session.QueryOver()
.其中(r=>r.isValid==1
&&r.value1==2
&&r.name==“XYZ”
&&[…等等,使用更多列…]
);
如果(筛选周)
结果。其中(x=>x.Whatever==1)
//在此之前,查询不会执行
result.List();
}  

谢谢,那会有用的——但这也意味着要从数据库中提取更多的数据。我想通过询问来回答。你没有读我的答案。您必须在执行查询之前添加限制。谢谢,这会起作用,但也意味着从数据库中提取更多数据。我想通过询问来回答。你没有读我的答案。您必须在执行查询之前添加限制。re://在这里之前查询不会执行谢谢,我不知道。re://在这里之前查询不会执行谢谢,我不知道。