Linq结果以不同的顺序显示

Mar*_*rco 1 c# linq linqpad linq-to-sql

我目前正忙着使用AdventureWorks示例数据库和LinqPad来解决一些想法.

这是有问题的查询:

SalesOrderHeaders.GroupBy (soh => new {soh.CustomerID, soh.BillToAddressID})
                 .Where(soh => soh.Skip(1).Any())
                 .Dump();
Run Code Online (Sandbox Code Playgroud)

我们的想法是根据某些标准找到重复项,然后显示除第一组数据之外的重复项.应从表中删除结果.

执行查询后,我得到结果A) 第一个结果

再次执行查询后,我得到结果B) 在此输入图像描述

我不关心查询的正确结果,而是关于结果集的排序.只存在这两种可能性,并且它们在查询的每次运行中都是交替的.当然我可以按Key订购,但我更感兴趣的是为什么会发生这种情况呢?为什么订单是chaning/altern?

brz*_*brz 6

Sql server select查询的结果集顺序不确定.它只是sql server的工作原理,它不是linq或linqpad中的错误.正如您自己指出的那样,在查询中获得确定性结果的唯一方法是使用OrderBy子句.

编辑:关于快速SSMS中相同的结果,如果你运行查询多次,看到这个.这篇文章解释了为什么如果多次执行查询以及为什么不应该依赖它,可能会得到相同的结果.