Member 12703654 Ответов: 4

Как ограничить количество возвращаемых записей данных


Привет,


Судя по вопросу, я новичок в программировании.

Я хотел бы знать, как с помощью" C# "запрограммировать" выпадающий список "так, чтобы он" загружал и показывал " 100 элементов одновременно.

< b> проблема:< / b>
Мой набор данных (MS SQL) имеет 40 000 записей - "выпадающий список" тянет все строки одновременно

Что я уже пробовал:

Хранимые процедуры SQL; ежедневный поиск в интернете; выдергивание волос.

Kevin Marois

Во-первых, расскажите нам немного больше о вашем окружении. Windows 7/8/10? Какая версия .Net? Какая версия SQL? Windows/WPF/Web?

Во-вторых, как пользователь загрузит следующие 100 записей? Каждый раз, когда он падает вниз, вы получаете следующие 100?

В-третьих, посмотрите на пейджинг - получение x-го количества записей на запрос. В принципе, вам нужно было бы сохранить начальный номер записи, а затем для каждого вызова увеличивать его на 100. Есть осложнения, когда речь идет о заказе. Взгляните на это:
http://stackoverflow.com/questions/109232/what-is-the-best-way-to-paginate-results-in-sql-server

Наконец, вы можете пересмотреть свой подход здесь. Выпадающий список на самом деле не рассчитан на 40 тысяч записей.

Member 12703654

Спасибо за советы-большая помощь в изучении того, как/что спрашивать на сайте.

4 Ответов

Рейтинг:
2

David_Wimbley

Я предполагаю, что вы используете какой-то ORM, поэтому то, что вы могли бы сделать для ваших данных, которые привязаны/загружаются в выпадающий список, - это использовать linq.

Таким образом, у вас будет что-то вроде

var dataFromDb = new List<yourentity>();
var data = dataFromDb.Take(100);


Чтобы загрузить их по 100 за раз, чтобы получить следующие 100, вам нужно будет отслеживать, на каком текущем счете они находятся, а затем сделать что-то в следующем порядке

var currentCount = 2;
var dataSetSize = 100;

var dataFromDb = new List<yourentity>();
var data = dataFromDb.Skip(dataSetSize * currentCount).Take(dataSetSize);


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


Рейтинг:
1

laljidhameliya

если вы использовали процедуру хранения, то используйте смещение для загрузки 100 записей при прокрутке

      SELECT * FROM Students
WHERE Name LIKE N'%abc%' OR Description LIKE N'%%' OR NoofCourses LIKE N'%%' 
ORDER BY ModifiedDate desc OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY


этот запрос получает запись от 0 до 100 только тогда, когда вам нужно получить другую запись, проходящую на основе этого параметра в процедуре хранения и получить записи
Как показано ниже

      SELECT * FROM Students
WHERE Name LIKE N'%abc%' OR Description LIKE N'%%' OR NoofCourses LIKE N'%%' 
ORDER BY ModifiedDate desc OFFSET 101 ROWS FETCH NEXT 200 ROWS ONLY


вышеприведенный запрос возвращает вам еще 100 записей от 101 до 200


Рейтинг:
0

Patrice T

Цитата:
Мой набор данных (MS SQL) имеет 40 000 записей - "выпадающий список" тянет все строки одновременно
Принцип дроплиста, который тянет 40 000 записей, сам по себе плохая идея. Загрузка записей куском по 100 - это не очень хорошее решение, потому что если вам нужно что-то в конце списка, вам все равно нужно загрузить 40 000 записей, и это добавит задержку.

Вам нужно построить динамически заполняется раскрывающегося списка точно так же, как это делает Google, когда вы что-то печатаете.
Вы должны представить себе что-то, что будет работать на вас.
В Google он показывает только самые популярные ответы, которые соответствуют тому, что вы уже набрали, и список перестраивается каждый раз, когда вы набираете письмо.


Рейтинг:
0

RickZeeland

Используйте оператор TOP в своем SQL-запросе, например

SELECT TOP 100 * FROM MyTable;

Вы также можете использовать SET ROWCOUNT чтобы ограничить количество записей, см.
[^]

Однако, используя LINQ может быть, все было бы проще, как это было .skip и .take чтобы получить записи.