我得到两个不同的结果,而我希望无论我如何查询数据库,结果都是相同的。在查询1的结果中,我得到一个值列表,如
NY 3
AL 6
WI 5
等。
但是,当我运行查询2来测试我的值是否准确时...当我专门运行并获得状态“NY”时,我得到一个完全不同的数字为纽约。他们只是不适合任何州。我不确定哪一个是准确的数字。
查询1:
//Edit
int countTheaters = session.Query<Theaters>()
.Count();
var TheaterByStateList = session.Query<Theaters>()
.Take(countTheaters)
.ToList()
.GroupBy(x => x.State)
.OrderBy(x =>x.Count())
.ToDictionary(x => x.Key, x => x.Count());
查询2:
int TheaterCountByState = session.Query<Theaters>()
.Where(x => x.State== "NY")
.Count();
答案 0 :(得分:2)
我们不知道你的架构,所以很难说。但我很确定你的问题在于:
.Take(countTheaters)
这意味着您只对第一个countTheaters
行运行分组,而另一个查询示例则依赖于数据库中的所有行。
答案 1 :(得分:1)
原因是,.Take()仅返回RavenDB服务器配置中设置的最大记录数。这是因为乌鸦安全设计理念应该让你早期(开发中)失败,从而帮助你避免如果你不知道不分页的方式可能会发生的很多痛苦(人们经常运行的东西)与NHibernate或EF2)。
因此,默认情况下,如果不指定其他任何内容,则只能获得128条记录。您可以在客户端上更改它,但是您永远不会获得比服务器上设置的数字更多的记录(1024我认为,但不应该关心 - 没有理由为什么有人想要更改这些限制)。