powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / как выбрать строки с 5 по 10?
9 сообщений из 9, страница 1 из 1
как выбрать строки с 5 по 10?
    #36422889
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Оракле можно ограничить выбор данных с [n] по [m] следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select
*
from
(
	select rownum as n, t.* from my_table where my_field = some_value
)

where n between :n and :m

В АДО.НЕТ выборка из таблиц производится методом MyTable.Select("my_field = 'some_value')
который возвращает массив строк.
Есть ли какой либо способ ограничить кол-во возвращаемых строк аналогично ораклу?


С уважением. Ашот.

p.s. это нужно для "постраничного" отображения данных
...
Рейтинг: 0 / 0
как выбрать строки с 5 по 10?
    #36423038
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выборка должна быть серверной (SQL запрос)? Тогда озвучьте название SQL-сервера, с которым работаете.
Если Выборка локальная (например, из DataTable), то:

Код: plaintext
var table = MyTable.AsEnumerable().Skip(n).Take(m).CopyToDataTable();
...
Рейтинг: 0 / 0
как выбрать строки с 5 по 10?
    #36423068
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВыборка должна быть серверной (SQL запрос)? Тогда озвучьте название SQL-сервера, с которым работаете.
Если Выборка локальная (например, из DataTable), то:

Код: plaintext
var table = MyTable.AsEnumerable().Skip(n).Take(m).CopyToDataTable();


Как раз не серверной, выбираю из ДатаСет..........
И вроде ваш ответ, то - что нужно............ спасибо, попробую........
...
Рейтинг: 0 / 0
как выбрать строки с 5 по 10?
    #36423148
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karapetyan_aКак раз не серверной, выбираю из ДатаСет

Если:

karapetyan_aэто нужно для "постраничного" отображения данных

то нужно выбирать с сервера, а не прокачивать все данные на клиента (ASP.NET приложение), а потом резать локально. Это серьезный удар по производительности SQL-сервера.

Пример для MS SQL Server 2000
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
CREATE PROCEDURE northwind_OrdersPaged
(
    @PageIndex int, 
    @PageSize int
)
AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
DECLARE @RowsToReturn int

-- First set the rowcount
SET @RowsToReturn = @PageSize * (@PageIndex +  1 )
SET ROWCOUNT @RowsToReturn

-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize +  1 

-- Create a temp table to store the select results
CREATE TABLE #PageIndex 
(
    IndexId int IDENTITY ( 1 ,  1 ) NOT NULL,
    OrderID int
)

-- Insert into the temp table
INSERT INTO #PageIndex (OrderID)
SELECT 
    OrderID
FROM 
    Orders
ORDER BY 
    OrderID DESC

-- Return total count
SELECT COUNT(OrderID) FROM Orders

-- Return paged results
SELECT 
    O.*
FROM 
    Orders O,
    #PageIndex PageIndex
WHERE 
    O.OrderID = PageIndex.OrderID AND
    PageIndex.IndexID > @PageLowerBound AND
    PageIndex.IndexID < @PageUpperBound
ORDER BY 
    PageIndex.IndexID

END


Пример для MS SQL Server 2005/2008
Код: plaintext
1.
2.
3.
SELECT * FROM 
    (SELECT ROW_NUMBER() OVER (ORDER BY name) AS num, id, name FROM sysobjects) t
WHERE num BETWEEN  10  AND  20 
ORDER BY num
...
Рейтинг: 0 / 0
как выбрать строки с 5 по 10?
    #36423211
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Речь об ASP.NET приложении, так-как вся база 2000 строк, и клиенты никак не обновляют ее, то я при старте приложения закачал все в DataSet и держу в памяти один на всех экземпляр.
при выборе пользователем типа товара, я выбираю все товары выбранного типа, ну пусть их будет 100 строк и вот при отображении хочется сделать что-то типа DataPager (точно не помню названия, короче постраничной листалки )............
Так что речь о запросов на сервер не идет......... ( с SQL-ом я бы выкрутился )
Речь идет именно о НЕТ. овских объектах/коллекциях где данные уже загружены с сервера.......
...
Рейтинг: 0 / 0
как выбрать строки с 5 по 10?
    #36423222
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
то нужно выбирать с сервера, а не прокачивать все данные на клиента (ASP.NET приложение), а потом резать локально. Это серьезный удар по производительности SQL-сервера.


как раз в моем случае никакого "удара по производительности SQL-сервера" нет, потому как я обращаюсь к нему один раз, при Application_Start..................
...
Рейтинг: 0 / 0
как выбрать строки с 5 по 10?
    #36423253
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karapetyan_a2000 строк, и клиенты никак не обновляют ее, то я при старте приложения закачал все в DataSet и держу в памяти один на всех экземпляр.
Ну если актуальность данные крайне низка или обновление данных пользователями происходит крайне редко, то добро.
Но, всё-равно - лучше DataSet в Cache загрузите (в Global.aspx, чтобы датасет сам обновлялся).
Сохранение элемента с политикой устаревания 10 минут, не имеющего зависимостей:
Код: plaintext
Cache.Insert("MyItem", датасет, null, DateTime.MaxValue, TimeSpan.FromMinutes(10));

karapetyan_aРечь идет именно о НЕТ. овских объектах/коллекциях где данные уже загружены с сервера.......
Ну тогда ок.
...
Рейтинг: 0 / 0
как выбрать строки с 5 по 10?
    #36423289
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУGlobal.aspx
Global.asax
...
Рейтинг: 0 / 0
как выбрать строки с 5 по 10?
    #36423395
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

По поводу кеша......... подумаю........
Я в АСП.НЕТ новичек, первый сайт пишу, так все больше на ВинФормс.....
Именно в Global-е и прописал статичное свойство ДатаСет...........
Но может Ваш вариант будет предпочтительнее......... жизнь покажет
Почитаю про кеш........ приму решение.....

По любому спасибо за советы.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / как выбрать строки с 5 по 10?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]