Как искать из верхних xxx строк в базе данных, используя Entity Framework - PullRequest
1 голос
/ 03 мая 2019

У меня есть база данных с более чем 1 миллионом записей, я хочу найти значение в этой базе данных, но я знаю, что это значение находится где-то в первой 1000 записей.

List<string> onHoldOrderslist = 
     orderList.Where(m => (m.customerId == item.customerId)
                          && (m.Marketplace == Market.US) 
                          && (m.OrderStatus == "onHold"))
              .Select(s => s.OrderId)
              .ToList();

В кодеЯ не хочу искать всю таблицу базы данных orderList, только самые верхние записи xxx.

Мои вопросы:

  1. Как это делается с linq?Я не смог найти ни одного примера!
  2. Повышает ли это производительность запросов?

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Используйте

List<string> onHoldOrderslist = orderList.Where(m => (m.customerId == item.customerId) && (m.Marketplace == Market.US) && (m.OrderStatus == "onHold"))
.OrderBy(x => x.WhateverMakesSense)
.Take(1000)
.Select(s => s.OrderId)
.ToList();

Обратите внимание, что порядок важен, так как в противном случае вы можете получить случайные 1000 элементов ...

0 голосов
/ 03 мая 2019

Учитывая, что вы говорите, что это «запись», и вы только возвращаете ее, не беспокойтесь о том, что она входит в топ-1000 (а top даже ничего не значит, если вы не укажете заказ). Использование Take(1000) после предложения where ничего не даст, так как в любом случае есть только одна запись. Все, что вам нужно, это индекс, в данном случае на customerId, Marketplace и OrderStatus.

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