IQueryable ToList (), кажется, теряет порядок - PullRequest
1 голос
/ 25 августа 2011

У меня есть модель EF4 и метод для получения из модели страниц, разбитых на страницы (сущность Anagrafica), что-то вроде (simplefied):

public List<Anagrafica> Get(string SortExpression, int startRowIndex, int maximumRows) 
{
    return context.Anagrafiche.Where(/* some filters */)
                             .OrderBy(SortExpression)
                             .Skip(startRowIndex)
                             .Take(maximumRows).ToList();
}

Все это управляется с помощью ObjectDataSource в Asp.Netпроект, и данные связаны с Telerik RadGrid.

Проблема заключается в том, что, если я устанавливаю SortExpression в поле с нулевыми значениями, по какой-то причине список, данный методом, кажется, имеет случайный порядок,

Это правильная «страница» результатов (например, те же самые первые 10 элементов, которые я могу получить из SQL-запроса), но внутри Списка порядок рандомизирован.

И яне знаю, ПОЧЕМУ.

1 Ответ

0 голосов
/ 16 июня 2014

Я полагаю, что проблема заключается в функции пропуска.

У нас есть два списка iqueryable, которые объединены в один, и эти два запроса упорядочены сами.Если мы получим результат без функции пропуска, все будет в порядке, но после использования порядок пропуска будет разрушен.Мне нужно решить эту проблему, но сейчас она остается кошмаром.

Я имею в виду так:

IQueryable список 1: 1. ID: 1 2. ID: 5 3. ID:8

IQueryable список 2: 1. ID: 2 2. ID: 3 3. ID: 9

CocatList = list1.concat (list2)

, если мы берем безс помощью функции пропуска результат:

  1. ID: 1
  2. ID: 5
  3. ID: 8
  4. ID: 2
  5. ID: 3
  6. ID: 9

, но если мы используем пропуск, результат будет следующим:

Страница 1 (без пропуска, с дублем): 1. ID: 1 2. ID: 5 3. ID: 8

Страница 2 (с пропуском, с дублем): 1. ID: 3 2. ID: 9 3. ID: 5

Это все вызвано пропуском, я думаю.

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