powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / next ID
16 сообщений из 16, страница 1 из 1
next ID
    #37468525
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Скажите - можно ли с помощтю запроса найти следующий ID в БД? Если данный ID последний, то следующим должен быть первым.

У меня есть только такая идея: Есть таблица Design и данный ID:

Код: plaintext
1.
var query = from q in ddc.Designs                            
                            select q;
далее просто запихнуть в массив все id из таблицы designs. И i+1 элемент будет следующим.
Если i-ый id и так был последним, тогда следующим элементом будет первый элемент массива.

Скажите - есть ли алгоритм получше?
...
Рейтинг: 0 / 0
next ID
    #37468604
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё зависит от задачи в которой требуется следующий ID.
...
Рейтинг: 0 / 0
next ID
    #37468663
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня есть таблица дизайнов и их названий:
ID Name
1 style.css
2 style2.css
4 style3.css
8 style4.css


При нажатии на кнопку "Сменить дизайн" я с помощью ajax передаю на сервер название текущего дизайна из <style href="название">
Далее на сервере нахожу ID текущего.

Далее мне нужно ID следующего (!), чтобы выслать имя дизайна назад на клиент и подставить его в href. Получается Обновление дизайна без перезагрузки старницы.

Проблема в том, что у меня нету оптимального способа поиска следующего дизайна.
Свой способ я описал, но мне он не кажется очень хорошим
...
Рейтинг: 0 / 0
next ID
    #37468787
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы без циклов нужна конструкция типа:

Код: plaintext
1.
2.
3.
4.
5.
int id; //текущий id
var query = from q in ddc.Designs                            
where q.ID = id                
select q;

Design d = query.Next();

Но т.к. ".next" нету, то приходится с циклом делать
...
Рейтинг: 0 / 0
next ID
    #37469296
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут кто-нибудь есть?
...
Рейтинг: 0 / 0
next ID
    #37469337
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть ещё идея такая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int id;
int k=0;
var query = from q in ddc.Designs
select q;

Design d = query.First();
foreach (Design item in query)
{
if (k==1)
    int id_need = item.ID; //тот ID, который нам нужен
if (item.ID == id)
    k=1;
}
...
Рейтинг: 0 / 0
next ID
    #37469386
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ещё такая идея, как следующий id выгрузить:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
int id;
int id_need
var query = from q in ddc.Designs
select q;
for(i=1;i<n;i++)
{
    var query1 = from qq in ddc.Designs
    where qq.ID = (id+i)
    select qq;
if(query1.Any())
{
    Design d = query1.Single();
    id_need = d.ID;
    break;
}
}

Но тут тоже с циклами и может долго получиться. Кто-нибудь знает - как найти следующий без циклов?
...
Рейтинг: 0 / 0
next ID
    #37469491
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается, что следующий элемент в БД нельзя получить без цикла?
...
Рейтинг: 0 / 0
next ID
    #37469540
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Studentsполучается, что следующий элемент в БД нельзя получить без цикла?
Вообще никак нельзя, если честно.
На худой конец, используйте не идентити, а гуид.
...
Рейтинг: 0 / 0
next ID
    #37469541
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
            // test data
            int[] Designs = { 2, 4, 5 };
            //int Current = 2;
            //int Current = 4;
            int Current = 5;
            // end of test data

            int Result = Designs.Concat(Designs)
                .Aggregate(0, (r, n) => r > 0 ? r : (r == -1 ? n : (n == Current ? -1 : 0)));
...
Рейтинг: 0 / 0
next ID
    #37469547
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как всё сложно, я думал, что можно по простому как-то
...
Рейтинг: 0 / 0
next ID
    #37469907
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если обычный select сделать?
не подходит?
...
Рейтинг: 0 / 0
next ID
    #37470089
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

Выбирать следующие не 1, а 2 значения. Если придёт 1, то понимаем, что достигли конца. Обнуляем и начинаем сначала.
...
Рейтинг: 0 / 0
next ID
    #37470094
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно добавить запись, а потом её удалить.
Вопрос на засыпку. Вообще-то классика.
...
Рейтинг: 0 / 0
next ID
    #37470440
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть ещё идея такая:
Код: plaintext
1.
2.
u => u.id>2
orderby
take(1)
...
Рейтинг: 0 / 0
next ID
    #37470443
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее так:
Код: plaintext
1.
2.
3.
4.
int id//наш текущий id

u => u.id>2
orderby
take(1)

if (!query.Any())
//значит берем первый
else
//нашли следующий элемент
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / next ID
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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