Результат запроса linq не в порядке - PullRequest
1 голос
/ 06 мая 2020

У меня есть список целочисленных идентификаторов, скажем, MyIdList = {3, 7, 4, 1, 9, 2}, который является подмножеством идентификаторов, присутствующих в моей таблице. Этот список отсортирован по моим условиям. У меня есть переменные DbContext и Dbset для запроса моей таблицы базы данных postgres, скажем, MyTable. MyTable имеет много столбцов и строк.

Когда я выдаю запрос ниже, я получаю правильные результаты (6 строк), но они отсортированы в некотором порядке, который не совпадает с порядком, указанным выше.

Мой запрос:

List<MyTable> myresult = await dbset.Where(p => MyIdList.Contains(p.Id)).ToListAsync();

Мое требование - получить список объектов myresult из этой таблицы с помощью запроса linq в том же порядке, в котором существует MyIdList.

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

1 Ответ

0 голосов
/ 06 мая 2020

Это дубликат этого вопроса.

Вам просто нужно добавить расширение OrderBy для сортировки по индексу вашего списка MyIdList . Попробуйте это:

List<MyTable> myresult = await dbset
    .Where(p => MyIdList.Contains(p.Id))
    .OrderBy(p => MyIdList.IndexOf(p.Id)     
    .ToListAsync();
...