2012-08-13 101 views
0

是否有可能在查询创建后添加多个where子句。例如,下面的查询正确返回1个结果:Ravendb - 多个where子句?

var q1 = session.Query<Template>() 
    .Where(x => x.Tags.Any(y => y == "one")) 
    .Where(x => x.Tags.Any(y => y == " two")); 
var r1 = q1.ToList(); 

但这一行为就像没有where条件,并返回30个结果:

var q2 = session.Query<Template>(); 
q2.Where(x => x.Tags.Any(y => y == "one")); 
q2.Where(x => x.Tags.Any(y => y == " two")); 
var r2 = q2.ToList(); 

在所有ravendb支持的第二个例子吗?为什么这两个查询不相等?

回答

7

它们不一样,因为您不使用组合查询。你必须这样改变你的代码:

var q2 = session.Query<Template>(); 
q2 = q2.Where(x => x.Tags.Any(y => y == "one")); 
q2 = q2.Where(x => x.Tags.Any(y => y == " two")); 
var r2 = q2.ToList(); 
+0

是的,这解决了它。我没有意识到它每次都会返回一个新对象。 – flukus 2012-08-13 10:37:09