OrderBy и Distinct с использованием LINQ-to-Entities - PullRequest
5 голосов
/ 12 марта 2010

Вот мой запрос 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]

Это ошибка? Где мой заказ, черт побери?

Ответы [ 2 ]

10 голосов
/ 12 марта 2010

Вы должны отсортировать после Distinct, поскольку это не дает никаких гарантий относительно сохранения заказа:

entities.MyTable.Select(o => o.MyColumn).Distinct().OrderBy(o => o);
1 голос
/ 12 марта 2010

В этом вопросе обсуждаются правила для Linq to Objects: Сохранение заказа с помощью LINQ

В базе данных еще меньше операций сохраняют порядок. Никто нигде не сохраняет порядок при различении (как правило, используется алгоритм хеширования).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...