2014-06-08 122 views
0

我在RavenDB簡單指標:RavenDb Linq查詢更大和低比較

地圖:

from q in docs.Questions 
from Tag in q.Tags 
select new { Tag, Count = 1 } 

減少

from result in results 
group result by result.Tag into g 
select new { Tag = g.Key, Count = g.Sum(x=>x.Count) } 

,我有一些代碼來調用它:

var query = from item in session.Query<TagCount>("Questions/Tags") select item; 
Console.WriteLine(query.Count()); 
foreach (var result in query) 
{ 
    Console.WriteLine("{0} - {1}", result.Tag, result.Count); 
} 

它產生的產量:

3 
Games - 1 
RavenDb - 2 
Intro - 1 

如預期的那樣。 但是,如果這個循環之後添加一些代碼:

var counted = from item in query 
where item.Count > 0 
select item; 
Console.WriteLine(counted.Count()); 

輸出將是:

3 
Games - 1 
RavenDb - 2 
Intro - 1 
0 

跆拳道?爲什麼計數是零?

但是,如果我在數比較有 '==',它的工作原理:

var counted = from item in query 
where item.Count == 1 
select item; 
Console.WriteLine(counted.Count()); 

主要生產

3 
Games - 1 
RavenDb - 2 
Intro - 1 
2 

怎麼回事?

+0

如果你這樣做,你會得到什麼:var results = session.Query (「Questions/Tags」)。ToList(); var count = results.Count;'?? –

+0

count是3;如果我改變計數的查詢來選擇'結果',而不是'查詢'它像預期的那樣工作。但爲什麼? – l0nley

回答

0

有一個問題是,我沒有添加字段索引來存儲和分析它。 添加字段查詢並設置分析此字段解決問題。