使用LINQ到实体的OrderBy和Distinct

Blu*_*eft 5 sql linq linq-to-entities sql-server-2008

这是我的LINQ查询:

(from o in entities.MyTable
orderby o.MyColumn
select o.MyColumn).Distinct();
Run Code Online (Sandbox Code Playgroud)

结果如下:

{"a", "c", "b", "d"}
Run Code Online (Sandbox Code Playgroud)

这是生成的SQL:

SELECT 
[Distinct1].[MyColumn] AS [MyColumn]
FROM ( SELECT DISTINCT 
    [Extent1].[MyColumn] AS [MyColumn]
    FROM [dbo].[MyTable] AS [Extent1]
)  AS [Distinct1]
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?我的订单在哪里,该死的?

Meh*_*ari 10

您应该排序, Distinct因为它没有任何关于保留订单的保证:

entities.MyTable.Select(o => o.MyColumn).Distinct().OrderBy(o => o);
Run Code Online (Sandbox Code Playgroud)