OrderBy и Отличное использование LINQ к объектам

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

Действительно ли это - ошибка? Где мое упорядочивание, damnit?

5
задан Mike Two 12 March 2010 в 20:22
поделиться

2 ответа

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

entities.MyTable.Select(o => o.MyColumn).Distinct().OrderBy(o => o);
10
ответ дан 13 December 2019 в 19:25
поделиться

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

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

1
ответ дан 13 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: