这是我的LINQ查询:
(from o in entities.MyTable
orderby o.MyColumn
select o.MyColumn).Distinct();
结果如下:
{"a", "c", "b", "d"}
这是生成的SQL:
SELECT
[Distinct1].[MyColumn] AS [MyColumn]
FROM ( SELECT DISTINCT
[Extent1].[MyColumn] AS [MyColumn]
FROM [dbo].[MyTable] AS [Extent1]
) AS [Distinct1]
这是一个错误吗?我的订单在哪里,该死的?
答案 0 :(得分:10)
您应该在 Distinct
之后对进行排序,因为它没有任何关于保留订单的保证:
entities.MyTable.Select(o => o.MyColumn).Distinct().OrderBy(o => o);
答案 1 :(得分:1)
此问题讨论了Linq to Objects的规则: Preserving order with LINQ
在数据库中,更少的操作可以保留订单。当Distinct'ing(通常使用哈希算法)时,没有人能保持秩序。