Запрос LINQ OrderBy не работает - PullRequest
4 голосов
/ 10 сентября 2010
_db.InstellingAdressens
    .Where(l => l.GEMEENTE.Contains(gem_query))
    .OrderBy(q => q.GEMEENTE)
    .Select(q => q.GEMEENTE)
    .Distinct();

это запрос. он возвращает List<string>, но строки не упорядочены вообще. Почему OrderBy не имеет никакого эффекта? и как это исправить?

Ответы [ 4 ]

9 голосов
/ 10 сентября 2010

Попробуйте положить OrderBy в конце вашего звонка.

_db.InstellingAdressens.
    Where(l => l.GEMEENTE.Contains(gem_query)).
    Select(q=>q.GEMEENTE).Distinct().
    OrderBy(q=>q).ToList();
6 голосов
/ 10 сентября 2010

Distinct не знает, что вы заказали свои предметы до того, как он их получит, поэтому он не может использовать эти знания. Таким образом, он должен предполагать, что элементы неупорядочены, и поэтому будет просто делать с ними то, что хочет.

Типичная реализация будет использовать хеш-таблицу, которая упорядочена не так, как вы обычно хотите, чтобы элементы упорядочивались, поэтому результатом отдельной операции является неупорядоченный набор.

Так что, как предлагали другие, измените порядок ваших звонков, чтобы сделать заказ последним, и вы должны получить то, что хотите.

1 голос
/ 10 сентября 2010

Попробуйте просто поставить порядок по последнему запросу

_db.InstellingAdressens
.Where(l => l.GEMEENTE.Contains(gem_query))
.Select(q=>q.GEMEENTE)
.Distinct()
.OrderBy(q=>q.GEMEENTE).ToList();
1 голос
/ 10 сентября 2010

Изменить порядок звонков

_db.InstellingAdressens.Where(l => l.GEMEENTE.Contains(gem_query)).Select(q=>q.GEMEENTE).Distinct().OrderBy(q=>q.GEMEENTE).ToList();
...