我在RavenDB中有简单的索引:
图:
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
WTF?为什么计数数为零?
但如果我在计算比较中有'==',那就有效:
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 :(得分:0)
有一个问题是我没有将Field添加到索引来存储和分析它。 添加字段以查询和设置此字段的分析可以解决问题。