两个不同的查询 - 返回不一致的结果

时间:2012-01-12 19:03:03

标签: c# linq nosql ravendb

我得到两个不同的结果,而我希望无论我如何查询数据库,结果都是相同的。在查询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();

2 个答案:

答案 0 :(得分:2)

我们不知道你的架构,所以很难说。但我很确定你的问题在于:

 .Take(countTheaters)

这意味着您只对第一个countTheaters行运行分组,而另一个查询示例则依赖于数据库中的所有行。

答案 1 :(得分:1)

原因是,.Take()仅返回RavenDB服务器配置中设置的最大记录数。这是因为乌鸦安全设计理念应该让你早期(开发中)失败,从而帮助你避免如果你不知道不分页的方式可能会发生的很多痛苦(人们经常运行的东西)与NHibernate或EF2)。

因此,默认情况下,如果不指定其他任何内容,则只能获得128条记录。您可以在客户端上更改它,但是您永远不会获得比服务器上设置的数字更多的记录(1024我认为,但不应该关心 - 没有理由为什么有人想要更改这些限制)。

相关问题