我目前正在摆弄 AdventureWorks 示例数据库和 LinqPad,以寻求一些想法。
这是有问题的查询:
SalesOrderHeaders.GroupBy (soh => new {soh.CustomerID, soh.BillToAddressID})
.Where(soh => soh.Skip(1).Any())
.Dump();
我们的想法是根据某些标准找到重复项,然后显示除第一组数据之外的重复项。结果应从表中删除。
执行查询后我得到结果 A)
再次执行查询后得到结果 B)
我不关心查询的正确结果,而是关心结果集的排序。只有这两种可能性存在,并且它们在每次运行查询时交替出现。 当然我可以按 Key 订购,但我更感兴趣的是为什么会发生这种情况?为什么顺序改变/交替?
最佳答案
Sql server select 查询的结果集顺序是不确定的。这就是 sql server 的工作方式,它不是 linq 或 linqpad 中的错误。正如您自己指出的那样,在查询中获得确定性结果的唯一方法是使用 OrderBy
子句。
编辑:如果多次运行查询,关于在 SSMS 中获得相同的结果,请参阅 this .这篇文章解释了为什么多次执行查询可能会得到相同的结果,以及为什么不应该依赖它。
关于c# - Linq 结果以不同的顺序显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25930101/