Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
.NET 4.x

Что есть результат LINQ-запроса?

17.09.2013, 15:13. Показов 1071. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я конечно понимаю что под LINQ есть отдельный раздел, но все же у меня очень простенький вопрос, косается основы, вот пример:

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Linq;
 
class MyClass   {   static void Main()  {
 
int[] massiv = { 2, -5, 7, 1, 6, -22, 9, 12, -4, 4, 15 };
 
 
var NumPlus = from temp in massiv
              where temp > 0
              select temp;
 
Console.Write("Положительные числа массива: ");
foreach (int w in NumPlus)  {   Console.Write(w + " ");   }
 
Console.WriteLine("\n" + "Заменяем massiv[1] (" + massiv[1] + ") на 100");
 
massiv[1] = 100;
 
Console.Write("Положительные числа массива после изменений: ");
foreach (int w in NumPlus) { Console.Write(w + " "); }
 
Console.ReadKey();  }   }


Вопрос, что такое NumPlus? (нет, я не скачал от куда то этот пример и теперь задают тут глупые вопросы), как я понимаю это не переменная и не массив (коллекция данных), правильно ли я понимаю что NumPlus в данном случает что то между функцией и массивом, а точнее функцией и массивом одновременно и каждый раз при обращении к NumPlus сначала происходит выполнение "функции" описанной в строчках 9-11 а потом предоставление доступа к данным хранящимся в виде массива
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.09.2013, 15:13
Ответы с готовыми решениями:

Как вывезти результат LINQ запроса в textbox?
Выручайте, очень сильно прошу. Дана коллекция включающая в себя ФИО и дату рождения сотрудников. Сгруппировать сотрудников по первой...

Добавить результат LINQ запроса в конец List<>
Имеется Linq запрос возвращающий несколько строковых значений. Есть List&lt;string&gt; который уже содержит несколько элементов Как результат...

Оптимизация linq-запроса
Есть public ObservableCollection&lt;StreetViewModel&gt; Streets { get; set; } public StreetsViewModel() { ...

6
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.09.2013, 15:15
Это переменная, ссылающаяся на экземляр итератора, который обеспечивает обход по коллекции.
Точнее, на экземпляр класса, представляющего доступ к итератору.
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
17.09.2013, 15:20  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Это переменная, ссылающаяся на экземляр итератора, который обеспечивает обход по коллекции.
Блин по ошибке нажал "опубликовать тему" (или как там), потом начал дописывать, но тут уже получил ответ (хотя раздел C# не отличается молниеносностью ответов на вопросы, в отличии от С++)

Вопрос вот в чем, в данном примере, когда я обращаюсь к NumPlus допустим в строчке 21 или 14, то сначала происходит выполнение кода в строчках 9-11 и только потом предоставляются данные для перебора их в виде массива? просто я не совсем понимаю почему после изменения в массиве massiv одного из значений, у меня без всяких посторонних манипуляций в строчке 21 показывается измененный массив

PS меня интересует что это на ощупь, а не точное техническое описание
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.09.2013, 15:32
Цитата Сообщение от VLK Посмотреть сообщение
то сначала происходит выполнение кода в строчках 9-11 и только потом предоставляются данные для перебора их в виде массива?
Не совсем. Код в строчке 9 создает экземпляр класса, который "помнит", как именно вам нужно совершить обход по коллекции. То есть хранит в себе не более, чем "план" обхода.

Когда вы начинаете перечисление элементов через foreach, экземпляр, созданный в строке 9, выделяет вам "проводника" и дает ему сохраненную в строке 9 "план" обхода. По которой вас путеводитель и ведет, выдавая на каждой итерации элемент коллекции, в соответствии с "планом".
Начинаете новый блок foreach — получаете нового проводника, который начинает всё с начала. Разумеется, если коллекция изменилась между обходами, то эти изменения будут видны при последующем обходе.
То есть непосредственный обход производится в блоке foreach, а всё до этого — просто составление плана этого обхода.
Это если на ощупь.

Если технически, то гляньте на MSDN примеры реализации интерфейсов IEnumerable и IEnumerator — всё станет намного понятнее.
1
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
17.09.2013, 15:38
C#
1
var NumPlus = from temp in massiv where temp > 0 select temp;
эквивалентно
C#
1
var NumPlus = massiv.Where(temp => temp > 0);
Это только итератор, он не хранит и не накапливает данные. Он лишь содержит в себе конвейер который к исходным данным применяет все засунутые функции. У итератора нет состояния, он не помнит сколько раз к нему обращались, поэтому при каждом новом переборе, он обращается к исходным данным.
1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
17.09.2013, 15:39  [ТС]
kolorotur, спасибо, примерно это я и хотел услышать.
0
17.09.2013, 16:00

Не по теме:

Цитата Сообщение от VLK Посмотреть сообщение
хотя раздел C# не отличается молниеносностью ответов на вопросы, в отличии от С++
У C# ниже вход в понимание языка, поэтому людей, только начавших изучение языка, а уже почувствовавших силу, больше, чем людей, принявших и полюбивших язык, хоть и это сделать проще, чем сложнейший C++ 11 с темплэйтами, бустом и прочей жестью :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2013, 16:00
Помогаю со студенческими работами здесь

Реализация Linq Запроса
Допустим есть входящие данные : int x = {1,2,5,8,9} С помощью Linq нужно убрать те элементы , которые имеют перечисление , причем...

Оптимизация и целесообразность LINQ запроса
Добрый день. Решил воткнуть Linq в свой курсач, просто для саморазвития, потому что до этого не работал с ним ни разу Без Linq ...

LINQ объединить результат от декартова произведения
Есть несколько массивов string (до 30). Нужно найти их декартово произведение. Использую следующий код: string s = new string; ...

Проблемы с построением и работой запроса на LINQ
Здравствуйте! У меня возникла проблема с выполнением запроса, вот код: IEnumerable&lt;DataRow&gt; QueryResult= ...

Linq или не Linq. Linq медленней стандартных методов?
Есть у нас два массива, нужно найти совпадения в первом из второго. Два варианта реализации, первый костылем, второй с linq, но скорость...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru