C# programming. Lesson 13. LINQ introducion
HTML-код
- Опубликовано: 21 фев 2014
- Рассматривается технология LINQ, примеры работы, разбирается механизм LINQ с IEnumerable
Ссылки на предыдущие уроки:
Урок 12. Лямбда-выражения. • Уроки C#. Лямбда-выраж...
Урок 11. Три кита. • Уроки C#. Три кита
Урок 10. Исключения. • Уроки C#. Исключения
Урок 9. Множества. • Уроки C#. Множества
Урок 8. Обобщения. • Уроки C#. Обобщения
Урок 7. Пример создания приложения. • Уроки C#. Пример созда...
Урок 6. Интерфейсы. • Уроки C#. Интерфейсы.
Урок 5. Запечатанные, статические и абстрактные классы. • Уроки C#. Запечатанные...
Урок 4. Наследование и полиморфизм. • Уроки C#. Наследование...
Урок 3. Делегаты и события. • Уроки C#. Делегаты и с...
Урок 2. Состав типа. • Уроки C#. Состав типа.
Урок 1. Типы данных. • Уроки C#. Типы данных.
Самые самые лучшие уроки, ну нигде лучше не найти, просто класс
Огромное спасибо! Крайне не простые темы раскрыть так подробно и внятно - талант!
"Лирические отступления" - одна из самых полезных фич этого курса. Спасибо (/◕ヮ◕)/
Отдельное спасибо за пример реализации метода Where. Теперь Linq перестал казаться магией)
Спасибо! Мне нравятся Ваши занятия. Смотрел их все, хотя и пишу впервые. У меня были какие то представления о языке после книги Шилдта, но Ваши уроки мощно их дополнили и усилили. Очень жду новых тем. Очень хотелось бы, что бы периодически были уроки в духе Урока №7 (Пример создания приложения). Еще раз спасибо!
Особое спасибо за множество практических советов для начинающих разработчиков, как об использовании NotImplementedException.
Очень хороший пример - написать метод Where самому. Пока писал, разобрался и с множествами и с обобщениями и с тем как устроены методы расширения LINQ для типов IEnumerable. Всем советую попробовать самим, тем более, что потом можно сравнить с тем как сделал это автор.
Я просто в восторге от ваших уроков!
Спасибо за уроки. Четко, ясно. Шилдт + Вы - даже новичок освоит C#. Если можно - еще уроки, типа №7 (Пример создания приложения). А то теория вроде понятна, а как до дела доходит...Еще раз спасибо за ваш труд!
Отличные уроки! Спасибо!
Thank you. Very informative.
Добрый день! Благодарю вас за предоставленный ролик. Желаю вам успехов в новых видео!
И по C# хорошие уроки получаются, думаю не стоит распыляться на на другие языки... P.S. Жду новых уроков)
Хорошая идея с разборами полета! Спасибо !
Очень хороший рассказчик. Спасибо.
Голова кругом, но очень интересно рассказываете! Спасибо! :)
Спасибо за уроки. Чем мог, поддержал.
Игорь, большое спасибо за ваши хорошие уроки! Решил поинтересоваться, не хотите ли вы по-возможности сделать пару-тройку уроков по проектированию? Для этого можно было бы использовать те приложения, которые вы уже написали для себя или на работе, в которых, возможно, вы использовали какие-то интересные технологии или паттерны проектирования, а где - наоборот, от них отказались в пользу, например, оптимизации. Конкретные примеры или код опытного разработчика были бы очень полезны...
Defazze спасибо за интересные уроки. Очень бы хотелось урок по универсальным типам и разработке много поточных приложений.
По универсальным типам уже есть, см. урок "Обобщения".
Ясно спасибо.
с большим интересом посмотрел бы уроки, косвенно относящиеся к данной теме, но от этого не менее важную - тестирование! большинство авторов уроков обходят эту тему.
Тестирование - тема крайне обширная. Но в одном из следующих уроков она обязательно будет затронута (юнит-тестирование)
Добрый день!!! Присоединяюсь к благодарностям за Ваш труд! Ваши уроки просто находка для меня.
Но есть несколько вопросов.
При наборе кода у вас часто можно увидеть, что текст становится, если можно так выразиться, серым, что говорит о его необязательности, а так же подсказки в необходимости подключения тех или иных пространств имен. У вас установлен ReSharper?
Возможно, будет полезно (во всяком случае для меня точно) сделать небольшой урок с советами как быстро и удобно набирать код программ используя Intellisense, в том числе с функционалом того же самого ReSharper (или другого плагина, который Вы используете)...
Так же интересно, есть ли какой-то аналог ReShatper, так как он устанавливается только под полную версию Visual Studio, а Visual Studio Express им не поддерживается.
Да, у меня установлен ReSharper. Что касается его использования - ну на мой взгляд там всё интуитивно понятно, единственное, что я настраиваю - это соглашение об именах.
+Программирование - это просто Помогите пожалуйста))) В Visual Studio 2012 у меня выходит вот эта ошибка - Не удалось найти исходный файл C:\Windows\TEMP\.NETFramework,Version=v4.5.AssemblyAttributes.cs((( Что делать? Помогите пожалуйста))) Вы очень круто ведёте уроки по C#)))
+Александр Ампилогов, решарпер теперь можно установить на Visual Studio Community, так же решарпер даёт вам бесплатную версию, если вы студент
@@Defazze тут не описан класс TestSet{}
Вы часто говорите: "компилятор выделяет то", "компилятор подчеркивает это". По моему, компилятор имеет довольно опосредованное отношение к проверке текста программы, а конкретно в вашем случае чаще всего работает вообще сторонний плагин - ReSharper, если я не ошибаюсь.
Лучшее средство от бессонницы!))))
если я правильно понял, наши условия применяются к элементу множества в момент когда мы впервые что-то делаем с ним? Иначе я не совсем понимаю, как оно выводит одновременно сообщения о доступе к элементу из начального множества и полученых элементов после его обработки одновременно (не дожидаясь обработки остальных элементов).
Может, неправильно воспринял или путаюсь. 6:37 Мы воспользовались явным вызовом метода GetEnumerator() по интерфейсу IEnumerable именно потому что есть ещё одна версия GetEnumerator() для IQueryable? А название метода одно... Хотя нет. Студия не восприняла другой интерфейс.
И ещё. 28:50 Лямбда-выражения применяются к атомарным операциям - а что, если мы захотим отделить нечётные элементы от чётных пустой строкой (WriteLine();)?
+Юрий Пискунов если операция не атомарная, то используется анонимный метод вместо лямбда-выражения:
var resultSet = list.Select(i =>
{
Console.WriteLine();
return "*" + i.ToString() + "*";
});
P.S. Только надо иметь в виду, что засовывать Console.WriteLine() внутрь операций LINQ - не самое лучшее решение
Стоунвол разворачивается справа налево: LINQ - запрос, интегрированный в язык. ;-)
Когда появятся новые уроки?
Уже скоро.
А будут уроки посвященные другим языкам?С++, Java?
К сожалению, я не настолько хорошо знаю C++, чтобы делать по нему уроки. Что касается Java - она очень похожа на C#. Поэтому, хорошо зная C#, разобраться в Java не составит труда.
Жаль конечно, очень нравится как Вы рассказываете. Очень жду новые уроки по С#!
добрый день. продолжение следует?
Обязательно следует, через некоторое время.
не интегрированый язык а "язык интегрированых запросов"
ааа сложнааа
ниче не понял
А если так:
public IEnumerator GetEnumerator()
{
foreach(T element in _source)
{
if (_predicate(element))
yield return element;
}
}
@@user-ds3ws2ix6e с ключевым словом yield наверное будет работать в обход этого длинного кода . . . а к вам вопрос - тут не показан класс TestSet{}
public class TestSet : IEnumerable
{
public IEnumerator GetEnumerator()
{
for (int i = 1; i < 100; i++)
{
yield return i;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
я наверное привел его с ошибками. ВОПРОС: скажите как подправить этот класс (может даже радикально - чтобы заработал "длинный код" в конце этого ролика)
Вот и почему я такой тупой!?
Отличные уроки. Спасибо!