2012-08-13 103 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