Форум программистов, компьютерный форум, киберфорум
LINQ
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248

Обращение к одному и тому же результату запроса в цикле

18.02.2015, 00:06. Показов 1663. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, подскажите пожалуйста по тех. особенностям работы Linq запросов. Я вот раньше полагал, что при первом обращении к переменной запроса, компилятор сразу выполняет весь запрос и потом создает объект, который содержит ВСЕ результаты этого запроса (например, если запрос идет к массиву строк, то при первом обращении к переменной запроса, компилятор перебирает все что можно, что нельзя фильтрует и создает объект с результатами). Этот объект реализует перечислитель. Ну и благодаря перечислителю, с этим объектом содержащим результаты работает цикл foreach.
Однако при пошаговой отладке я наблюдаю, что в цикле foreach идет обращение к коду запроса каждый раз когда, наступает новый шаг цикла.
То есть получается, что не создается этот объект содержащий другие объекты с результатами ??
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2015, 00:06
Ответы с готовыми решениями:

Обращение к одному и тому же классу из разных классов
Здравствуйте! Пишу в классах(впервые относительно большой проект), до этого писал код в кадрах. Столкнулся с проблемой обращения к...

Обращение к результату работы функции
Здравствуйте. Есть код: #include <iostream> using namespace std; int sum() { cout << "Vvedite kol-vo vashih deneg...

Выборка по результату запроса
Есть запрос типа SELECT table1.time from table1 UNION SELECT table2.time from table2 Как мне выполнить запрос на выборку данных,...

3
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
18.02.2015, 00:47
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

bazyzy, это называется отложенное выполнение https://msdn.microsoft.com/ru-... 43859.aspx

Добавлено через 3 минуты
bazyzy, посмотрите еще раз на тот пример что вам привели,
после вывода результата запроса, я добавил еще одно имя
и опять делаю проход по тому же запросу, хотя запрос не изменял. и это имя добавилось в запрос

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            List<string> nickNames = new List<string> { "Gleb", "Pavel", "Guzel", "Sergey", "Mainsis", "Berkak" };
            var v = from n in nickNames select n.ToUpper();
            Console.WriteLine();
            nickNames.Add("Bill");
            nickNames.RemoveAt(0);
            foreach (var result in v)
            {
                Console.WriteLine(result);
            }
 
            Console.WriteLine();
 
            nickNames.Add("Jora");
            foreach (var result in v)
            {
                Console.WriteLine(result);
            }
Добавлено через 7 минут
то есть объект v который возвращает нам запрос, это объект,= в котором хранится вся информация, необходимая для выполнения запроса, а не результат запроса !
это очень важно понимать в linq.

но не все операции тут имеют отложенное выполнение
1
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248
18.02.2015, 01:17  [ТС]
Спасибо за ответ. Но тогда как объяснить, что v.GetType().Name возвращает имя типа некого объекта, который и содержит все результаты ?
Спасибо
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18235 / 14149 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
18.02.2015, 02:05
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

bazyzy, это т.н. итератор, то есть тип обеспечивающий перебор данных. В разных ситуациях это могут быть разные типы, но суть в виде отложенного исполнения никуда не девается.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2015, 02:05
Помогаю со студенческими работами здесь

Доступ к одному и тому же объекту из двух списков
Есть 2 списка(Gournal и bannerQueue) содержащие объекты класса. Беру из 1 списка некоторые и помещаю во 2 список. Как можно изменить...

Разная скорость интернета по одному и тому же кабелю
Здравствуйте! Подскажите пожалуйста , как можно решить проблему изложенную ниже. У меня на работе есть 2 ПК подключаю их по очереди по...

Обращение не к тому объекту в массиве
Здравствуйте. Есть программа: type TObj= object mas,velx,vely,ax,ay:real; x,y:integer; procedure rinit; procedure...

Среднее значение по результату запроса
Здравствуйте. У меня такой вопрос. Есть главная форма и на ней подчинённая, сделанная на основе запроса. Нужно на главной форме подсчитать...

Заполнение поля по результату запроса
Поле должно быть заполнено по умолчанию результатом запроса : Private Sub Контрагент_AfterUpdate() Dim wrkJet As Workspace Dim dbs...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru