Уроки C# - LINQ - Where, Select, GroupBy, AsParallel, x.Key - C#
HTML-код
- Опубликовано: 10 май 2019
- Донаты и на кофе ➜ t.me/win10tweaker/171
Эксклюзив для спонсоров ➜ / xpuct
Если недоступна спонсорка ➜
Форум по C#:
win10tweaker.ru/forum/forum/%...
#LINQ #Where #Select #AsParallel #GroupBy #OrderBy #СиSharp #СиШарп Наука
оглавление:
00:00 вступление
01:33 начало, об устаревших string массивах
02:58 reverse array
04:05 .ToList()
07:33 .Union()
08:40 .Skip()
09:03 .Distinct()
09:43 .Count()
12:53 .Where()
16:40 .Select()
19:30 .OrderBy()
кстати, все эти расширения очень похожи на SQL запросы, вернее, это грубо говоря они и есть
20:00 .OrderByDescending()
20:40 .ThenBy()
22:10 .GroupBy()
24:29 .Key
27:00 отступление об автоподставке
28:30 Parallel.For()
30:10 Parallel.ForEach()
32:25 .AsParallel() (.ForAll())
47:10 .Aggregate()
51:20 .First()
52:07 .FirstOrDefault()
52:43 .LastOrDefault()
52:48 .Any()
53:18 .All()
дальше рассказываем коротко
56:27 .Exept()
57:02 .SkipWhile()
Вот теперь порядок. Тема сложная, запомнить все невозможно а читать документацию лень когда есть такой учитель. Можете дописывать в ответах что добавить.
Я такой подачи материала еще не встречал, серьёзные темы с юмором=).Приятно слушать
Всю ночь искал вменяемое объяснение с примерами, а ваш канал - настоящий клад. Акцент на использование, а не на теорию, очень помогает быстро вникать. Спасибо!
"нет буквы п-пошел нахер" эта фраза просто убила)
Мужик ты лучший. Я за 5 минут узнал инфы больше чем где либо за часы
True story ☝
Мужик спасибо тебе огромное, жаль такого препода нету меня в универе
Спасибо большое, ты проделал огроменный труд.
Программка прекрасная, СПАСИБО !!!
Какой же ты монстр))))
Как можно настолько быстро и четко выдавать информацию?
Восторг!
Хачатур, большое тебе спасибо за этот ряд видосов, ты человечище. Это большой труд - снимать так, чтобы тебя понимали. Oчень много почерпнул по шарпу именно у тебя. Счастья :)
Ждем новые видео по обучению. Самый отличный мастер по обучению!
Пересматриваю тебя уже третий раз. Мужик! Большое благодарю! Самый крутой выпуск про магию Linq)!
Респект тебе)Ты первый человек,который заставил меня войти в свою учетку,чтобы поставить лайк и подписаться на канал.Видео без воды и по делу)
очень понятный материал, за подачу материала просто отдельный респект!
Топ видео!!! Спасибо огромное! Теперь буду пользоваться LINQ!
Благодарю. Спасибо. Очень помог. Удачи во всём!!!
Шикарно объясняешь! Респект и лайк за урок!
Благодарю, вы лучший
Шикарный урок. Спасибо вам!
Привет Христ! Зачетные видео! Очень интересно рассказываешь, нравится смотреть твои уроки по C#!
Лаконично и доходчиво Вдохновительно и прикольно. Респект!
Спасибо большое! Очень плотная подача информация, круто. Большинство знал, но интересно было послушать, кое-что почерпнул для себя, хорошо рассказываешь. Лайк, подписка :)
Хачатур, спасибо! Такой подачи материала я еще не встречал...
У тебя супер уроки. Спасибо!
Это лучшее объяснение темы, что я видел.
Шикарно, спасибо !
Это первое видео на данном канале, которое я посмотрела. И точно не последнее. Спасибо за вашу работу и за такую крутую подачу!))
Мне даже спать перехотелось! Шикарный урок.
Респект, начал осваивать программирование и выбрал язык С# так как понравился синтаксис и в целом язык. Вот дошел до Линку и не мог понять select() благодаря тебе я все понял, спасибо)
Очень круто! Спасибо большое
Очень классное объяснение. Спасибо!
Лайк поставил, пошёл смотреть. Хорошо, что есть люди, которые могут нормально объяснять
как всегда на высоте, лайк
Продолжай снимать, очень помогают твои ролики
Спасибо, было интересно!
миллион лайков тебе мужик, прям красавчик. Музыка на фоне само то , помогает сконцентрироваться.
И инфа годная, +- нашел ответ на вопрос, который меня тревожил
Подписался, отличные видео для начинающих , столько практических примеров за видео не видел нигде.
Побольше домашних заданий, это то что нужно)
Это просто прекрасно
🙃
Тааааалант объяснять так, чтобы было понятно.
Где поставить 1000 лойсов???
Спасибо огромное!
БДЖЬЪ!!!!!!!! Супер взорвались все мои непонятки!
Случайно наткнулся на видео, хоть и знаю все эти дела, но в качестве повторения и просто приятного видео залипаю. Материал преподносится суперски, талант. Спасибо за видосики
Спасибо, все понятно!!!
Жостко бро подписался.
Ты мне прям глаза на линк открыл я думал то что это фигня.
У меня лабаротрка по спискам и колекциям и нужно ее вывести и обернуть а потом посчитать количество элементов крч должен был быть алгоритм а будет list.Revers() и list.Count () лол
Начал на Codewar проходить задания, пишу портянку с for- ами, foreach- ами. Смотрю решения, одна строчка у всех, аааа как? 🥵🥵🥵🥵
Побежал линк изучать, у тебя первый раз на канале, Инфа ТОП! Буду залетать, лайковать! Спасибо!
Хорош, спасибо, ахпер джан.
Дааааа😅😅😅. Так круто объяснили. Like и подписался. Продолжайте так.
Ну таких туториалов я ещё не смотрел) Спасибо
Большое спасибо!
Inline SQL в Шарпе это на самом деле круто :)
Ролик как всегда пушечный. Христ, у тебя одни из лучших обучающий роликов. Все быстро, внятно . Ролики по теме и с примерами. Нет никого бубнежа на 2-3 часа, как от дяди Васи, который по молодости писал калькуляторы для завода и который в душе не чает что такое ООП, но пытается его объяснять со своим беспонтовым микрофоном , купленным где-нибудь в Мвидео за 200 рублей . Очень жаль, что ты сейчас не записываешь обучающие ролики, но вижу активность в комментариях от тебя. Будем ждать продолжение твоих роликов. Надеюсь у тебя все хорошо.
Спасибо =) Всё хорошо.
Сейчас очень занят Win 10 Tweaker. Сложноватые задачи себе придумал, которые никто никогда не делал даже. Но справляюсь =)
Новые уроки будут. Как раз когда буду свободнее.
@@XpucT , удачных разработок!
"на... ты нужен, если у тебя нет большой буквы П" (С)
запоминающаяся фраза:-)
Уже шёл спать, а тут видос на час, ну за что?)))
такая же фигня досматриваю последний видос чтобы начать просмотр заново, но с практикой
Искал медь а нашел алмаз, спасибо за объяснения
+ Респект . Всё разжёвываешь для тупых , типа меня)) Пасиба
приятный дядька
Еще не успел посмотреть, но никогда не сталкивался с этим
Придется смотреть завтра
Спасибо 💕💕💕
Ждём ещё уроки. Особенно по работе с настоящей базой данных.
Спасибо! Невероятно полезно и доходчиво! (многим нравятся юморные вставки с содержанием генитального юмора, типа, расслабляют, меня же они немного раздражают и отвлекают, но тут каждому своё и на усмотрение автора, ессно)
Мужик, ты лучший препод на ютубе которого я видел) однозначно подписка - все по делу и без воды, быстро четко и понятно!
Тут у нас экшен пошел говорит :D :D :D
Спасибо!
Привет, Хачатур! Восхитительно объясняешь настолько сложные конструкции простым и понятным языком. Пожалуйста, больше обучающего контента, если есть время, конечно!
Как только заработаю свою первую копейку благодаря твоим урокам, обязательно поблагодарю тебя материально =)
☝Красавчик
Агрегация в linq берет результат делегата и пихает его для следующего элемента последовательности. В твоём примере с помощью агрегации ты выводил самую длинную строку
бро ты просто топ го больше уроков)
спасибо вам
Очень крутой канал. Очень хочется посмотреть видео про работе с базами данных. Сделайте пожалуйста видео про них 🙏🙏🙏
Такой урок точно будет 👏
Спасибо большое! Было очень интересно 👍
Одно только замечание: как раз FirstOrDefault() лучше использовать, чем First(), т.к. проверка на null куда дешевле в плане ресурсов, чем очень тяжёлые исключения. Тем более, можно написать так: MyClass my = list.FirstOrDefault(x => x.Lenght > 5) ?? new MyClass(...). Тогда точно ошибку не получите, а в конструкторе можно создать какое-то особенное состояние.
Ну а вообще, эти оба метода созданы, попросту, для разных логик.
Мужик, ты меня магии научил. Спасибо большое!
Христос воскресе!
Твои уроки это пока лучшее что я нашёл на рускоязычном сегменте.
Будешь ли пилить ещё? Когда новые видео?
Огромная тебе благодарность за проделанную работу.
Новые видео будут. Просто пока очень занят =)
@@XpucT , прошло пол года, где же ?
Крутой видос, Спс!
Однозначно подписота и лайк!
Домашнее задание:
1. Спарсить (WebClient) файл hosts, блокирующий клубнику ( github.com/StevenBlack/hosts/tree/master/alternates/porn )
2. Записать в список (List) только те строки, которые начинаются на 0.0...
3. Если файл C:\Windows\System32\drivers\etc\hosts существует, сделать бэкап рядом
4. Записать антиклубничный hosts в новый hosts.
Для тех, кому нужно посложнее:
5. Учесть строки, которые уже есть в родном файле hosts и вписать туда антиклубничный hosts.
6. Сделать сортировку в файле по доменным именам по алфавиту.
7. Если встречаются и 0.0.0.0 и 127.0.0.1, то выбрать что-то одно и вписывать все по одному стандарту, например, 0.0.0.0
Домашняя работа. drive.google.com/drive/mobile/folders/12HXeI7ZxdTGl3sz8yQsJeVBpv8XaRHo_
У кого ссылка на ГитХаб не работает, уберите скобку в конце ссылки, не за что.
@@sergeyobzorsik2ch153 поправил.
RUclips бы кто поправил =)
@@XpucT Здравствуйте, а уроки ООП будут?
урок очень хорошо
Во первых я рад, что дошел уже до такого уровня в языке что могу легко понимать это видео, во вторых ты очень круто обьясняешь. Я уже умею юзать например .Where но не понимал как он вообще работает с любым именем которые в параметры передаем)) Очень круто обьясняешь спасибо тебе.
Спасибо большое за видео! Сделай, пожалуйста, ролик о приёме и передаче сообщений по последовательному порту в режиме реального времени
Видео больше для Junior Strong, которые уже начали двигаться к Middle и изучать дополнительные фишки, технологии, фреймворки...
Спасибо большое, всё очень доходчиво, с юмором и на максимально понятных примерах!
кому нужен джун без знания линка?
Не со всеми конечно твоими роликами согласен, но вот про linq классно рассказал. Зря я раньше им не пользовался) Ну а тебе спасибо, что доходчиво всё объяснил)
Я думаю каждый новичок(я), рано или поздно поймет, что он пишет говнокод и придет к этому видео. Пишу значит код и понимаю, что в нем много ненужного. А LINQ-божество.
Здравствуйте Хачатур! Интересно было б глянуть работу сканирования штрих кодов и qr с помощью веб камеры)
Ты самый крутой препод в Ютубе по программированию, даже мне школьнику это понятно, так объяснять не каждый умеет, Гоши Дударю нужно у тебя получится, это популярный кликбейтный-программист, вот бы ты ещё курсы по юнити делал!
Спойлер:
По Unity будут ;)
@@XpucT ура
Когда три года работал с SQL, то LINQ как родной залетает. :)
Каким образом ты пишешь сразу в нескольких строках? Вот это уже действительно черная магия
1. Установи курсор в область, где нужно что-то написать
2. Зажми Ctrl + Alt и кликни в другую область, где также нужно что-то написать
3. Не отпускай Ctrl + Alt, если таких строк много
👍
Максимально по делу, понятным языком, да это ж топищее
Отличная скорость. А то вечно страдаешь от тормозов. Мозг начинает отвлекаться обычно, а тут прямо на волне.
отличный материал, спасибо!
LINQ очень похож на sql) Спасибо за урок, круто объясняешь, очень понравилось)
очень похож, только вот в SQL я хорош, а вот с LINQ плачу, но с этим видосом получше начал понимать
когда с Питона на Шарп садишься очень приятно что тут такие же штуки есть
супер
Спасибо за уроки! Очеь надеюсь увидеть у вас урок с подробным разбором HTTP запросов!
Поддержал материально ваш канал чтобы было больше мотивации для работы)
Спасибо!
Не ну в принципе логика взята из SQL. Понимая SQL можно легко адаптироваться. Названия методов взяты тоже из sql, что даже запоминать не нужно. Трудно будет тем кто не знает этого. Урок супер как всегда...
Привет. Очень крутые занятия! Сделай курс по созданию полноценного приложения с правильным написанием кода. И было бы прикольно отдельно записать видео о том, как писать код не нужно. Заранее спасибо!
Успел заметить что ты не записал newlist в label раньше тебя. Это приятное ощущение когда нашел чужую ошибку))
Да, кстати =)
Вы очень круто объясняете. Благодарю вас за подробные разборы). Пожалуйста скажите, а будет ли разбор про IEnumerable?
Огромное человеческое спасибо!
Я недавно начал изучать этот язык, у меня был калькулятор на Over 999999 строк.
Благодаря вашим объяснениям лямбда-выражений, классов и методов, запилил за 10 мин новый калькулятор, скорее всего, конечно же, это пока тоже гавно-код, ну вот вообщем:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += (s, a) => { label4.Text = Convert.ToString(Act.Addition(double.Parse(textBox1.Text), double.Parse(textBox2.Text))); } ;
button2.Click += (s, a) => { label4.Text = Convert.ToString(Act.Subtraction(double.Parse(textBox1.Text), double.Parse(textBox2.Text))); } ;
button3.Click += (s, a) => { label4.Text = Convert.ToString(Act.Multiplication(double.Parse(textBox1.Text), double.Parse(textBox2.Text))); } ;
button4.Click += (s, a) => { label4.Text = Convert.ToString(Act.Division(double.Parse(textBox1.Text), double.Parse(textBox2.Text))); } ;
}
}
public class Act
{
public static double Addition(double a, double b)
{
return a + b;
}
public static double Subtraction(double a, double b)
{
return a - b;
}
public static double Multiplication(double a, double b)
{
return a * b;
}
public static double Division(double a, double b)
{
if (b != 0)
return a / b;
else
return 0;
}
}
}
Правда, хотелось бы ещё минимизации кода, но пока не понимаю, как это сделать, например, сам математический знак действия, отправлять аргументом метода, чтобы написать всё одним методом например, а не четырьмя, надеюсь, что вы расскажете про это. Жду новых видео!
Если, кто может подсказать, что угодно, скажу спасибо.
Правильно ли я оформил try catch?
button1.Click += (s, a) => { try { label4.Text = Convert.ToString(Act.Addition(double.Parse(textBox1.Text), double.Parse(textBox2.Text))); } catch { label4.Text = "error"; } ; };
button2.Click += (s, a) => { try { label4.Text = Convert.ToString(Act.Subtraction(double.Parse(textBox1.Text), double.Parse(textBox2.Text))); } catch { label4.Text = "error"; } };
button3.Click += (s, a) => { try { label4.Text = Convert.ToString(Act.Multiplication(double.Parse(textBox1.Text), double.Parse(textBox2.Text))); }catch { label4.Text = "error";} };
button4.Click += (s, a) => { try { label4.Text = Convert.ToString(Act.Division(double.Parse(textBox1.Text), double.Parse(textBox2.Text))); } catch { label4.Text = "error";} };
Вроде всё работает.
Подскажите, нужны ли вообще эти методы, если весь код можно записать четырьмя строчками?
button1.Click += (s, a) => { try { label4.Text = Convert.ToString((double.Parse(textBox1.Text) + double.Parse(textBox2.Text))); } catch { label4.Text = "error"; } };
button2.Click += (s, a) => { try { label4.Text = Convert.ToString((double.Parse(textBox1.Text) - double.Parse(textBox2.Text))); } catch { label4.Text = "error"; } };
button3.Click += (s, a) => { try { label4.Text = Convert.ToString((double.Parse(textBox1.Text) * double.Parse(textBox2.Text))); } catch { label4.Text = "error"; } };
button4.Click += (s, a) => { try { label4.Text = Convert.ToString((double.Parse(textBox1.Text) / double.Parse(textBox2.Text))); } catch { label4.Text = "error"; } };
Точно
Смотрю уже третий ролик, прикольно) Хотя у меня 10 лет стажа программирования на C# :) Эдакий гоп-кодинг... Большой плюс за правильное произношение английских слов! Доступно - тоже да. круто. Минус наверно только за названия методов) Мне кажется, людям было бы даже проще понимать, если бы не "давайте назовем этот метод просто метод", а называть все-таки правильно - так, чтобы было понятно, что делает этот метод) Но в целом подача - огонь!)
Привет, будет ли ролик о оптимизации программы? Знаю, что вы заняты, но если хоть когда-то будет, то скажите)
FirstOrDefault, SingleOrDefault это не говнокод, а вполне себе полезный паттерн, эти методы намного предпочтительнее, чем First, Single потому что они безопасны. Aggregate используется для более сложных целей, в ваших примерах достаточно Select, Count. Ну и стоило сказать самое главное про linq. Это то, что он выполняется лениво. То есть методы linq будут выполнены только при вызове методов перечисления, таких как ToList, Count, First и т. д. Это важно, так как если написать методы linq, потом модифицировать исходную коллекцию, и только потом сделать перечисление, то методы linq будут применяться к коллекции уже после модификации. В ваших примерах перечисление происходило внутри string.Join. но работа конечно большая проделана, с удовольствием досмотрел
Про метод Take(); забыли. Крутая штука для пагинации, вместе со Skip();
збс мужик