background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "LINQ и работа с коллекциями в C# - Учим Шарп #20"

input logo icon
Обложка аудиозаписи
Подождите немного, мы готовим ссылки для удобного просмотра видео без рекламы и его скачивания.
console placeholder icon
Теги видео
|

Теги видео

linq
linq c#
коллекции c#
ienumerator c#
ienumerable c#
коллекции
ienumerable
SingleOrDefault
ElementAt
ElementAtOrDefault
LastOrDefault
firstordefault
программирование c#
программист c#
программирование
программист
c# программирование
c#
с#
.net
c sharp
csharp
visual studio c#
it
visual c#
dotnet
си шарп
c# уроки
программирование с нуля
уроки c#
c# для начинающих
c# курс
c# уроки для начинающих
code blog
шванов вадим
учим шарп
codeblog
ityoutubersru
разработка
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:13
так ну что добрейшего вечера дорогие
00:00:16
друзья надеюсь меня хорошо видно и
00:00:19
слышно если это так пишите в
00:00:20
комментариях чтобы и увидел и был
00:00:22
спокоен что картинка видно что звук
00:00:27
слышен не слишком громко не слишком тихо
00:00:30
все замечательно и мы могли нормально
00:00:33
начинать у нас сегодня интересная тема
00:00:36
язык запросов link очень важная тема
00:00:41
очень часто используется она позвонит он
00:00:46
позволяет манипулировать коллекциями
00:00:49
данных что очень актуально при работе с
00:00:54
базой данных соответственно база данных
00:00:57
использоваться практически везде так
00:01:00
привет александр надеюсь все хорошо
00:01:04
видно слышно отлично замечательно и так
00:01:09
пока подключаются
00:01:12
люди соответственно я скажу несколько
00:01:15
вводных слов примерно до 5 минут и после
00:01:19
этого соответственно приступим к
00:01:22
изучению нашего сегодняшнего материала
00:01:24
первое о чем хочется сказать о том что у
00:01:27
меня есть группа вконтакте в этой группе
00:01:29
вконтакте публикуются материалы которые
00:01:32
связаны с шарфом которые связаны с
00:01:35
другими языками программирования статьи
00:01:40
юмор все что может быть интересно
00:01:42
программисту все соответственно можно
00:01:44
найти в моей группе ссылки все ссылки
00:01:49
про все что я говорю можно без проблем
00:01:51
найти в описании после описания видео
00:01:53
идёт блок ссылками
00:01:55
там посмотрите все подписано я думаю
00:01:59
разберетесь ничего сложного нет так что
00:02:02
группа вконтакте заходите подписывайтесь
00:02:07
также есть телеграм-канал где
00:02:09
публикуются материалы чуть пореже но
00:02:12
соответственно для тех кто любит
00:02:15
telegram это отличный способ получать
00:02:19
информацию
00:02:20
рекомендую тоже подписаться
00:02:23
zen блог где публикуются мои статьи
00:02:27
публикуются там почитать в основном там
00:02:32
про софт скилл соответственно про то как
00:02:37
правильно построить процесс
00:02:39
программирования как меньше допускать
00:02:41
ошибок окрас сегодняшняя статья которая
00:02:45
набрала большое количество показов так
00:02:51
что тоже можно заходить почитать туда я
00:02:54
думаю будет полезно и так же для того
00:02:58
чтобы не пропускать новые уроки новые
00:03:02
видео о проходят они у нас два раза в
00:03:05
неделю в понедельник и в четверг
00:03:08
соответственно привет всем привет в
00:03:13
понедельник и в четверг 8 часов вечера
00:03:15
но чтобы не пропустить можно поступить
00:03:18
тремя способами можно подписаться на
00:03:21
рассылку вконтакте в описании ссылочка
00:03:25
вам прямо в личные сообщения будут
00:03:27
приходить
00:03:30
ссылки на
00:03:32
носами уроки и можно будет
00:03:35
соответственно ничего не пропустить в
00:03:37
любое время зашли посмотрели ничего не
00:03:40
потеряется также можно вступить в чат
00:03:45
чат специальный посвященный сишарп где
00:03:49
уже нахожусь не только я но и другие
00:03:53
программисты которые могут что-то
00:03:55
подсказать рассказать общение это всегда
00:03:59
очень важно для программиста так что
00:04:01
советую что вступать а также можно
00:04:04
подписаться на youtube канал и включить
00:04:07
колокольчик
00:04:08
тогда тоже вам будут приходить
00:04:10
уведомление в приложении
00:04:14
соответственно тогда точно тоже ничего
00:04:17
не пропустите
00:04:20
так почти все сказал последние чем
00:04:23
осталось сказать то что в правом верхнем
00:04:24
углу у нас находится подсказки где можно
00:04:28
найти все плейлисты канала и
00:04:30
соответственно посмотреть какие видео
00:04:35
были до этого и другие плейлисты канала
00:04:40
тоже связаны если с ним так я думаю на
00:04:43
это будем заканчивать водную часть и
00:04:47
будем приступать к теме и так link
00:04:54
пишется он ленку соответственно если что
00:04:58
я думаю видите когда перейдем к
00:05:01
практической части сейчас немножко
00:05:03
поговорим на прошлом занятии мы говорили
00:05:07
про базу данных мы делали элементарные
00:05:10
самые простые бы
00:05:11
баз данных работали с entity framework
00:05:14
ом и соответственно кроме того что
00:05:19
добавляйте получать данные из базы
00:05:22
необходимо иногда получать не все данные
00:05:27
а какие то определенные соответствующие
00:05:30
какими-либо условиям как раз таки именно
00:05:33
для этого и именно для этого и создан по
00:05:36
сути язык запросов sql который позволяет
00:05:39
форматировать
00:05:42
запрос так и получают те данные которые
00:05:44
нам нужны соответственно синтаксис языка
00:05:50
sql является обязательным для любого
00:05:54
какая программиста это та тема которая
00:05:58
используется постоянно без который
00:06:01
практически невозможно ничего
00:06:03
разрабатывать если вы не изучали еще и
00:06:06
съели настоятельно рекомендую потратить
00:06:11
хорошо времени но понять понять
00:06:16
действительно понять эту тему изучить
00:06:18
все досконально и соответственно
00:06:25
язык и стиль это язык запросов
00:06:28
но в языке сша по писатель не искали
00:06:34
нельзя на самом деле можно но это не так
00:06:38
удобно мы работаем языке все шар с
00:06:41
классами и мы хотим
00:06:45
с ними и продолжать работать они просто
00:06:47
виде
00:06:48
статичные какой-то команды на какой-то
00:06:53
строки и как раз таки для этого и служит
00:06:57
вот эта библиотека
00:07:00
link она позволяя она нужна для того
00:07:04
чтобы манипулировать коллекциями данных
00:07:07
а как именно манипулировать это уже
00:07:10
другой вопрос она предоставляет большие
00:07:13
возможности для работы с данными начиная
00:07:18
от простейших допустим выбрать только те
00:07:22
элементы которые удовлетворяют определ
00:07:26
определенному условию допустим из всего
00:07:29
набора людей нам нужно выбрать только
00:07:32
мужчин соответственно мы берем указываем
00:07:36
параметры и получаем не всех людей а
00:07:39
потом их обрабатываем а получаем уже
00:07:42
конкретных как как
00:07:47
конкретно я уже набор данных которых нам
00:07:49
нужен мы можем делать составные запросы
00:07:51
там всех девушек от 18 до 25 лет выбрать
00:07:58
без проблем тоже это позволяет это можно
00:08:00
делать как в сиквел так можно делать и в
00:08:04
link
00:08:05
но в ленке это делать для программиста
00:08:08
сишарп удобнее потому что он работает
00:08:12
нет ни один не одним запросом а
00:08:16
соответственно
00:08:19
работает с классами привет кошмар
00:08:24
работает тяжело но пока справляюсь
00:08:28
спасибо что интересуешься вот таким
00:08:34
образом таким образом мы переходим к
00:08:38
тому что именно мы можем делать с
00:08:41
коллекциями с помощью ленка ну и в sql
00:08:46
это тоже можно делать так давайте по
00:08:49
порядку он потом на практике все все их
00:08:53
посмотрим мы можем преобразовывать
00:08:57
1 класс в другой класс очень удобно на
00:09:01
там это будет пригождается мы можем
00:09:08
накладывать условие на выборку то есть
00:09:10
то что я как раз таки говорил
00:09:15
ограничения на длину запроса blink есть
00:09:18
мне кажется не отдавай
00:09:22
точно удостоверимся по идее не должно
00:09:37
так
00:09:48
да похоже нет похоже нет то ограничения
00:09:51
длины запросу так что можно составлять
00:09:53
ну вот здесь единственное у тебя будет
00:09:56
просто если очень сложный вопрос который
00:09:59
как который прям будет очень сложно и
00:10:05
очень длинный у тебя будет просто очень
00:10:08
долго
00:10:09
отрабатывать он такое вполне возможно
00:10:12
так что здесь надо просто у тебя по
00:10:17
таймауту допустим при работе с базой
00:10:19
данных у тебя запрос может просто по
00:10:21
таймауту отвалится вот тебе и
00:10:23
ограничения как бы а так в принципе не
00:10:26
не должно быть ограничений далее что ещё
00:10:30
мы можем сделать мы можем накладывать
00:10:33
вот эти вот условия выборки выбирать не
00:10:38
все элементы из коллекции а выбирать
00:10:41
только те которые удовлетворяют
00:10:43
какому-либо условию
00:10:44
мы можем порядочек коллекцию .
00:10:50
по алфавиту по номеру по любому из полей
00:10:53
класса и по нескольким полям тоже можем
00:10:58
упорядочивать как у нас происходит
00:11:00
упорядочивание по нескольким полям
00:11:02
сначала идет упорядочивание по одному
00:11:04
полю и
00:11:07
внутри упорядочивания по одному поле у
00:11:10
нас идет после этого порядок и ваются по
00:11:13
другому полю
00:11:14
но и так соответственно необходимое
00:11:16
количество раз так мы можем делать
00:11:22
группировку мы можем разбивать одну
00:11:25
коллекцию элементов на групп и отдельных
00:11:30
коллекций
00:11:33
ну то же самое мы можем просто одну
00:11:36
коллекцию людей мы можем разделить на 2
00:11:39
группы это мужчины и женщин и на
00:11:43
неопределившихся допустим или на все
00:11:45
сколько там пятьдесят два киндера или
00:11:48
сколько их там уделять не знаю не
00:11:52
принципиально но суть то что мы можем
00:11:54
общую коллекцию разделить на группы по
00:11:56
какому-либо признан признаку мы можем
00:12:00
коллекции объединять мы можем
00:12:03
манипулировать мы мы можем
00:12:07
манипулировать коллекциями как
00:12:09
множествами это как раз таки то что
00:12:11
проходятся дискретной математики которую
00:12:14
нужно учить программистом то есть
00:12:17
достаточно частый вопрос который мне
00:12:19
задают нужно ли математикой программисту
00:12:21
нужно
00:12:22
но особенно будет нужна дискретная
00:12:25
математика вот на нее как раз таки
00:12:29
обращайте больше внимания вот и как одна
00:12:34
из частей дискретной математики идет
00:12:37
теория множеств вот соответственно мы
00:12:39
можем наши коллекции рассматривать как
00:12:42
множество и делать объединение множеств
00:12:44
пересечении множество и вычитание
00:12:47
множеств то есть у нас там есть
00:12:48
коллекция одних элементов коллекции
00:12:51
других элементов мы либо можем их
00:12:54
объединить в одно либо из одной
00:12:57
коллекции убрать те элементы которые
00:13:00
есть во второй коллекции
00:13:02
либо наоборот из 2 убрать то что из 1
00:13:05
либо либо выбрать только те элементы
00:13:10
которых которые пересекаются то есть
00:13:18
которые есть и в 1 и во 2 объединение
00:13:24
вычитание пересечения вот эти операции
00:13:26
тоже мы можем делать мы можем выполнять
00:13:31
агрегатный агрегатной операции то есть
00:13:35
там выполнить суммирование посчитать
00:13:40
там среднее допустим либо найти
00:13:43
максимальный минимальный элемент в
00:13:45
коллекции все это тоже можно сделать так
00:13:49
что у нас еще и ну и также мы можем из
00:13:52
коллекции получать
00:13:53
единичные элементы то есть взять там
00:13:56
выбрать первые элементы всей коллекции
00:13:59
последний элемент и всей коллекции
00:14:02
либо по индексу так владислав спрашивают
00:14:07
привет вопрос не по теме можешь не
00:14:09
отвечать хотелось бы узнать твое мнение
00:14:12
обычно будущем wpf стоит изучать его
00:14:15
первую очередь
00:14:16
или браться за dot nightcore не
00:14:19
принципиально разрабатывать для стоп или
00:14:21
в wpf пока будет wpf пока будет я думаю
00:14:26
ближайшие 5-10 лет он точно еще будет
00:14:30
жить возможно даже дольше так что можно
00:14:35
изучать но dot dot net core при
00:14:41
приоритетнее
00:14:42
то есть сначала лучше изучить идут
00:14:44
nightcore а потом уже смотрю в сторону
00:14:46
wpf vod-ok поехали дальше
00:14:53
но это в принципе я перечислил основные
00:14:56
операции давайте перейдем к практической
00:15:00
части я сделаю камеру поменьше и
00:15:03
соответственно начнем смотреть так так
00:15:11
так так создадим консольным приложением
00:15:22
да этот кстати урок должен был быть по
00:15:27
не безопасному программированию но я
00:15:31
решил что в прошлый раз рассматривали
00:15:33
базу данных базы данных без
00:15:35
ленка как бы ну это не полноценное
00:15:39
рассмотрение нам нужно нам нужно это
00:15:46
рассмотреть так что небезопасно и
00:15:49
программирование уходит на следующий
00:15:51
блок уроков следующий 10 уроков до конца
00:15:55
недели я выложу расписание как раз таки
00:15:57
в телеграм-чате по сишарпа я выложу себя
00:16:03
в группе вконтакте сделаю рассылку в
00:16:06
группе канта
00:16:07
вконтакте для подписавшихся а также
00:16:09
опубликую в сообществе youtube то есть
00:16:12
без проблем можно будет расписание найти
00:16:15
по числам по темам вот так что смотрите
00:16:21
так соответственно что нам нужно что нам
00:16:27
нужно во-первых нужно сказать то что
00:16:31
link позволяет работать с несколькими
00:16:34
типами коллекции то есть он может
00:16:37
работать
00:16:45
он может работать соответственно с
00:16:49
наборами данных то есть с нашими
00:16:54
entities из entity framework
00:16:57
когда нам надо надо работать с базой
00:16:59
данных он может работать с любыми
00:17:04
классами
00:17:05
который который реализует интерфейс
00:17:08
аян умер и был то есть любыми
00:17:10
коллекциями поэтому он может с xml
00:17:16
работать то есть по сути с любыми
00:17:21
коллекциями с любыми наборами данных это
00:17:23
очень удобно то есть мы можем работать в
00:17:27
одном и том же формате с любой коллекции
00:17:31
рассматривать мы будем
00:17:33
не знаю допустим ну начнем с простой с
00:17:37
простого списка из 10 элементов
00:17:42
целочисленного и соответственно
00:17:45
посмотрим может а потом скорее всего
00:17:48
создадим каким какой-нибудь класс и уже
00:17:51
будем смотреть более сложные но начнем с
00:17:54
простого
00:17:55
так соответственно что нам нужно что нам
00:18:00
нужно
00:18:06
вопросов видел кстати почему всегда
00:18:09
консольное приложение они winforms
00:18:11
это просто быстрее то есть winforms это
00:18:14
медленнее там надо что-то заниматься с
00:18:17
интерфейсом что-то думать кнопочки поля
00:18:19
и так далее
00:18:32
вот
00:18:33
кнопочки
00:18:34
а все вот это надо делать с помощью
00:18:38
informs а здесь просто у тебя из черный
00:18:41
экран консоли и ты радуешься так вам или
00:18:45
я
00:18:46
рассмотрим этот пример да но сначала мы
00:18:48
посмотрим на списке на обычном списке
00:18:52
чтобы
00:18:57
чтобы было проще потому что я знаю что
00:19:01
смотрит и совсем начинающие
00:19:08
окпо
00:19:09
закрой пожалуйста панель элементов
00:19:14
закрыл окей без проблем
00:19:20
так это сделаем поменьше
00:19:24
кот сделаем побольше тоже уменьшим
00:19:27
где-то
00:19:31
о
00:19:35
вот
00:19:36
[музыка]
00:19:40
окей поехали
00:19:43
делаем коллекцию делаем коллекцию в виде
00:19:47
пас простейшего
00:19:49
списка list of war collection
00:19:57
но лист
00:20:04
подключаем эрик библиотеку
00:20:16
так смотри
00:20:18
link это язык язык запросов для язык
00:20:27
запросов для данных с помощью языка
00:20:31
сишарп
00:20:32
то есть по сути он делает то же самое
00:20:34
что делает эскивель
00:20:35
но мы можем манипулировать коллекции
00:20:38
данных не с помощью escape а может
00:20:40
манипулировать данными с помощью ленка
00:20:43
это все shape это удобнее так теперь
00:20:51
сделаем заполнение свой и меньше 10-ти
00:21:07
[музыка]
00:21:11
как лучше использовать обобщение ну
00:21:16
когда они тебе нужно так и нужно
00:21:18
использовать вот список отличный пример
00:21:21
использования когда тебе нужно
00:21:25
определять тип данных после
00:21:29
не на этапе проектирования класса а на
00:21:33
этапе использование его то
00:21:36
соответственно вообще не вот они классно
00:21:40
для этого подходит так и соответственно
00:21:44
collection
00:21:50
мы просто создали коллекцию и наполнили
00:21:54
ее значениями я сделал пока такой формат
00:21:57
на тот случай что потом мы перейдем не
00:21:59
просто к целочисленным значением классом
00:22:03
чтобы можно было по конкретному полю
00:22:06
[музыка]
00:22:07
смотреть а не просто по самому элементу
00:22:11
вот теперь теперь давайте стоит сказать
00:22:18
что у ленка есть две формы записи
00:22:30
привет александр спасибо в очередной раз
00:22:33
тебе за поддержку
00:22:35
посматриваю после стрима посмотрю что ты
00:22:38
скинул так что занимайся нужно
00:22:44
заниматься ok поехали то есть про что я
00:22:50
говорил я говорил про то что у нас есть
00:22:52
две формы записи есть стандартная
00:22:56
которая у нас есть которая очень сильно
00:23:00
похожи на запрос сиквел а также
00:23:05
также есть по форма записи которая
00:23:09
выглядит в виде методов расширений
00:23:11
методы расширения мы пока не разбирали
00:23:14
это будет тема в будущих 10 уроках но
00:23:18
скажем так это что они позволяют делать
00:23:22
они позволяют добавлять методы в классы
00:23:29
добавлять добавлять me not методы
00:23:33
расширения это методы которые
00:23:35
добавляются добавляется поверх класс api
00:23:43
без создания
00:23:48
без сознания создания наследника это ну
00:23:52
скажем так вот есть класс а сверху к
00:23:54
нему прилипали прилипали вот так вот
00:23:57
этот метод то есть он не содержится
00:24:01
внутри класса на самом деле это по сути
00:24:03
синтаксический сахар просто в качестве
00:24:07
одного из аргументов он поднимает сам
00:24:12
объект класса мы научимся их писать
00:24:15
обязательно это будет
00:24:17
но сейчас просто нужно понимать то есть
00:24:20
это такие методы которые добавляются
00:24:24
классом расширяют функционал класса
00:24:28
ok
00:24:30
рассмотрим сначала стандартную форму
00:24:32
записи по похоже на
00:24:39
похоже
00:24:40
seagull а потом рассмотрим то же самое с
00:24:43
помощью с помощью методов расширение
00:24:48
форму записи
00:24:49
поехали мы хотим получить из коллекции
00:24:52
только те элементы которые меньше пяти
00:24:56
допустим меньше меньше либо меньше 5
00:25:00
соответственно мы хотим сохранить эту
00:25:04
коллекцию в переменную лизал мы так и
00:25:07
пишем резал теперь мы используем
00:25:15
ключевое слово from from теперь мы
00:25:19
указываем элемент привет людей
00:25:28
элемент то есть мы будем рассматривать
00:25:30
как целую коллекцию так и и один
00:25:33
конкретный элемент
00:25:34
то есть вот у нас идет и там in
00:25:38
collections здесь вот в эту переменную
00:25:43
точно так же как в порече у нас будет по
00:25:48
очереди помещаться все элементы все
00:25:56
элементы коллекции здесь примерно
00:25:58
примерно можно представлять что работает
00:26:01
точно также то есть здесь а этом это
00:26:05
элемент коллекции далее мы можем
00:26:08
добавить us условия то есть тоже точно
00:26:12
также выглядит prom.ua
00:26:15
ой там меньше идти и говорим что что
00:26:21
нужно с этим элементом сделать нам его
00:26:27
надо взять пыль выбрать select ayting
00:26:32
так он у нас будет ругаться потому что
00:26:35
нас пока не
00:26:36
не подключен link не забываем подключать
00:26:40
вот этот библиотеку ленка без нее
00:26:44
соответственно работать не будет вот и
00:26:47
на выходе что у нас получилось у нас как
00:26:50
раз получилось коллекция айну мире был
00:26:54
которая ну то есть это список ну не
00:26:58
совсем список это просто набор элементов
00:27:01
коллекция и теперь мы можем эту
00:27:07
коллекцию вывести на консольку for each
00:27:13
work it in salt то есть вот мы из
00:27:21
результирующий коллекция consol
00:27:24
writeline этом вот здесь мы сначала
00:27:33
собрали porn полную коллекцию тебя
00:27:37
теперь теперь мы из этой коллекции
00:27:41
задали условие согласитесь достаточно
00:27:44
достаточно сильно по похоже на яндекс
00:27:49
сиквел а кто с ними знаком здесь без
00:27:55
проблем все поймет все прекрасно ясно
00:27:57
видно вот и по после этого сохранили
00:28:01
результат в переменную и соответственно
00:28:04
потом эту переменную перебираем и
00:28:06
выводим на консоль мы сделаем как ползу
00:28:14
вот и посмотрим что у нас получилось то
00:28:19
что опоздал не страшного как бы это
00:28:22
нормально главное что пришел вот
00:28:25
соответственно без проблем мы выбрали ту
00:28:26
коллекцию которую нам нужны которое нам
00:28:29
нужно давайте теперь запишем тоже самое только
00:28:34
с помощью методов расширений war
00:28:39
резал 23 свой
00:28:43
теперь мы указываем саму коллекцию и
00:28:50
теперь вот методы расширения как раз
00:28:54
таки они показаны вот списки элементов
00:28:58
класса они отображаются только тогда
00:29:01
когда у нас подключена библиотека
00:29:03
соответственно без подключен библиотеки
00:29:06
они отображаться список списках методы
00:29:09
класса не будут их можно узнать вот по
00:29:12
таким вот стрелочкам который как раз
00:29:15
таки указывают что это не внутренний мир
00:29:18
1 класс
00:29:19
они не дни родной метод класса а это
00:29:22
метод расширения вот этот вот при ляпах
00:29:24
который сделан сверху класса и мы хотим
00:29:31
выбрать то есть у нас точно так же
00:29:34
задается условия и в круглых скобках мы
00:29:38
указываем как раз таки наш точно так же
00:29:43
как мы здесь задавали элемент мы его
00:29:46
указываем здесь айтем такой что то есть
00:29:50
это сейчас мы используем так называемый
00:29:53
лямбда выражения мы их пока тоже
00:29:56
конкретно не проходя я не пройти не
00:29:58
проходили но соответственно это будет
00:30:03
следующие 10 уроках на одном из них но
00:30:08
сейчас просто применить это что здесь мы
00:30:10
указываем точно также как здесь мы
00:30:12
указывали элемент коллекции точно также
00:30:16
указываем здесь и даем условие выборки
00:30:24
вот то есть я читаю для понимания это
00:30:28
очень легко вот этот знак воспринимается
00:30:30
как такой что айтем такой что это меньше
00:30:33
5 то есть выбрать такие элементы которые
00:30:37
меньше 5
00:30:40
для того чтобы для собственного класса
00:30:43
такую штуку сделать этот класс должен
00:30:47
реализовывать интерфейс аян умер и был
00:30:54
вот этот вот если класс реализует
00:30:57
правильно это этот интерфейс с ним с ним
00:31:02
можно работать с помощью ленка
00:31:04
точно так же его можно перебирать с
00:31:06
помощью цикла for eight как его
00:31:11
реализовывать я думаю тоже мы рано или
00:31:14
поздно будем и этот интерфейс
00:31:16
реализовывать может быть отдельные будет
00:31:18
занятие может быть будет в рамках
00:31:20
практической части но будем вот мы
00:31:26
указали
00:31:27
collection п и в чем суть методов
00:31:31
расширения то что они сразу же
00:31:33
возвращает элемент и мы можем продолжить
00:31:37
работу то есть мы можем добавить ещё
00:31:45
какие-то условия опять через точку то
00:31:48
есть у нас вот это вот колбаса
00:31:51
операций может остановиться очень
00:31:54
длинный больше даже на сосиски похожего
00:31:58
связка sasisa которая разделена точками
00:32:01
то есть у нас сначала целая коллекция
00:32:04
потом из коллекции мы выбрали те которые
00:32:08
те которые меньше пяти теперь мы можем
00:32:12
опять сделать дополнительное условие но
00:32:14
так не надо делать это проще сделать
00:32:16
через ну через логическое условие и но
00:32:20
просто для примера я сейчас показываю то
00:32:22
что мы можем добавить ещё какое-то
00:32:24
условие то есть опять idem так такой что
00:32:32
[музыка]
00:32:34
idem это чушь итератор 500м
00:32:40
остаток отделение на 2 равен нулю то
00:32:45
есть так мы выбираем те которые меньше
00:32:48
пяти из них мы уже выбираем те которые
00:32:52
четные и потом мы можем еще раз
00:32:57
продолжить что-то с этой коллекции
00:32:59
делать там ордер buy decrease in a
00:33:05
упорядочить в противоположном
00:33:08
направлении и так далее то есть у нас
00:33:16
вот эта штука может продолжаться очень
00:33:20
долго и упорно вот ее в строчка обычно
00:33:23
не пишут и и чаще всего пишут вот
00:33:26
примерно таким образом фриз указывая вот
00:33:31
по уровню точек то есть вот так условия
00:33:35
в столбик и с этим соответственно уже
00:33:38
работает но мы пока больше это
00:33:43
рассматривать не будем мы просто взяли
00:33:45
коллекцию и выбрали из них из нее все
00:33:49
элементы которые меньше пяти и
00:33:52
соответственно теперь выведем еще раз 32
00:33:58
[музыка]
00:34:01
а это мной давай еще сделаем пропуск
00:34:03
между этими выборками
00:34:10
запускаем
00:34:12
вот то есть у нас две совершенно
00:34:14
идентичные операции то есть как видите с
00:34:18
помощью вот этих выражений у нас
00:34:20
получается короче меньше печатать
00:34:22
поэтому они пользуются большей
00:34:25
популярностью с помощью методов
00:34:26
расширений и чуточку больше вот
00:34:36
так
00:34:38
мы хотим сделать теперь теперь немножко
00:34:41
усложним нашу работу то есть сейчас мы
00:34:44
рассмотрели элементарно на
00:34:46
коллекции простых чисел но мы хотим
00:34:51
сделать не просто допустим список целых
00:34:54
чисел
00:34:55
давайте сделаем
00:35:01
отец целый класс дополнительный что у
00:35:05
нас бы было из предметная область у нас
00:35:09
было было было было было спортивная
00:35:15
счетчик калорий
00:35:17
привет при-привет у нас был счетчик
00:35:22
калорий и там были продукты
00:35:27
а
00:35:28
раз мы не будем сейчас мы не будем
00:35:31
рассматривать как делать методы
00:35:33
расширения в принципе гугл гугл в помощь
00:35:38
это гуглится зайди на метане там есть
00:35:41
примеры почти почитая посмотри это дело
00:35:44
делается очень просто на самом деле это
00:35:47
статический класс статический метод
00:35:49
и этот метод в качестве первого
00:35:52
аргумента с дополнительным ключевым
00:35:55
словом цис должен будет принимать первым
00:35:59
аргументом экземпляр самого классы на
00:36:01
вот это вот твоего собственного класса
00:36:04
над которым будет выполняться действие и
00:36:06
все наверное объяснил сложно хотя
00:36:11
пишется это достаточно легко так давайте
00:36:16
сделаем классы
00:36:20
создадим новый класс не будем по блокаде
00:36:23
создадим классно то нормальным отдельным
00:36:29
в отдельном файле
00:36:33
так мы сделаем продукт
00:36:39
вот и в этом классе мы продукту добавим
00:36:45
что продуктом мы добавим имя
00:36:50
[музыка]
00:36:56
public так string name
00:37:11
public
00:37:19
но и калорийность элементарно мы не
00:37:26
будем сильно заморачиваться сделаем
00:37:29
такой вот сделаем такой вот класс и
00:37:34
соответственно у нас уже будет
00:37:36
создаваться коллекция
00:37:39
не про они просто целых чисел будет
00:37:43
создаваться коллекции наших продуктов
00:37:46
для этой коллекции нам теперь эту
00:37:50
коллекцию надо чем-то заполнить
00:37:55
так пусть это будет
00:37:58
[музыка]
00:38:02
так вот добавим какой-нибудь генератор
00:38:07
случайных чисел
00:38:09
а не будем генератор просто сделаем
00:38:13
давайте все-таки
00:38:16
неё
00:38:19
[музыка]
00:38:22
соответственно у нас будет
00:38:25
квар продукт
00:38:28
равно не и роду со следующими
00:38:37
параметрами так на м3 свой продукт и но
00:38:54
просто будет меняться ими отмечаться по
00:38:57
номеру и иногда у нас как раз таки будет
00:39:01
задаваться случайно калорийный за 100
00:39:08
грамм пусть там будет от 10 до 500
00:39:13
калорий случайно какое-то количество
00:39:15
задаваться
00:39:17
abs лишнее вот
00:39:32
это не не не сильно принципиально мы
00:39:34
делаем чисто вот так давай вынесу
00:39:51
а
00:40:04
оставь
00:40:05
тические же зонтик все время забываю что
00:40:10
мы фактически
00:40:15
такие сюда мы соответственно добавляем
00:40:17
наш продукт вот теперь для начала
00:40:22
изменим наше условие наши условия вот
00:40:29
эти вот выборки так чтобы они были
00:40:34
подходили для наших сегодняшних то есть
00:40:37
когда нам нужно указать какое то
00:40:39
конкретное поле то есть мы будем
00:40:41
выбирать те продукты энергетическая
00:40:44
ценность которых меньше меньше 200 так
00:40:51
как у нас а этом является элементом
00:40:54
коллекции
00:40:56
мы можем указать соответственно
00:40:59
конкретное свойство вот нашу энергию мы
00:41:03
будем указывать
00:41:06
начну также никаких проблем у нас с этим
00:41:09
не возникает так и здесь мы ставим
00:41:18
вместе
00:41:25
не запустим для примера давайте
00:41:29
переопределим ту string что у нас
00:41:32
появилось tostring будет так так
00:41:50
и в скобочках будет указано
00:41:57
энергетическая ценность
00:41:59
весьма будет знаем из нас будет напишем
00:42:10
и теперь у нас она уже выведется
00:42:13
корректно вот соответственно мы получили
00:42:17
выборку этих продуктах энергетическая
00:42:20
ценность которых меньше 200
00:42:26
так поехали дальше вот мы рассмотрели
00:42:30
простую выборку
00:42:34
так простой выборку с одним условием
00:42:37
также мы можем комбинировать делать
00:42:41
сложные условия через оператора и или
00:42:46
как здесь так и здесь все это будет
00:42:54
прекрасно работать либо так или иначе
00:43:04
больше 400 допустим не тогда у нас кровь
00:43:09
будут выведены либо меньше 200 либо
00:43:13
больше 400
00:43:17
давайте проверим должна отличаться
00:43:21
доведите в первом случае у нас выбрались
00:43:24
только те которые меньше 200 во втором
00:43:27
случае у нас еще появились
00:43:28
дополнительные продукты которые больше
00:43:31
400 два три четыре пять шесть семь
00:43:34
восемь все попали все попали в этот
00:43:38
промежуток вот такое вот случайное
00:43:40
распределение у нас интересно сработала
00:43:43
вот так в мы сделали теперь теперь
00:43:51
давайте посмотрим следующую операцию это
00:43:55
мы можем свернуть
00:43:59
вот сейчас мы посмотрим операцию
00:44:02
преобразование одного типа по другую а
00:44:05
называется она select то есть вот это
00:44:08
немножко
00:44:09
может поломать логику людей которые
00:44:14
которые работают со стилем потому что
00:44:23
select там работает совершенно
00:44:26
по-другому он нет не преобразуют один
00:44:30
тип другой клинки же select служит как
00:44:33
раз таки для преобразования то есть на
00:44:36
входе мы имеем коллекцию продуктов
00:44:39
давайте мы из этой коллекции продуктов
00:44:42
сделаем коллекцию только-только
00:44:47
энергетических ценностей то есть из
00:44:50
массе из списка продуктов мы сделаем
00:44:52
список целых чисел как мы это можем
00:44:55
сделать для этого как раз таки будем
00:44:59
использовать вот эту форму записи форму
00:45:03
записи с помощью методов расширений она
00:45:06
более комфортно более часто используется
00:45:09
то есть вот эту форму записи мы сейчас
00:45:12
не будем использовать
00:45:16
то есть по сути под здесь у нас как раз
00:45:18
таки этот select и преобразует мы при
00:45:23
необходимости можем здесь тоже задавать
00:45:25
вот этот вот это преобразование когда мы
00:45:28
пишем select a это мы просто указываем
00:45:30
что вернуть тот же тип который у нас
00:45:34
есть если мы здесь укажем как раз таки а
00:45:38
это менеджер у нас вернется коллекция
00:45:41
целых чисел в конце
00:45:42
то есть вот этой команды мы задаем тот
00:45:45
тип который у нас будет возвращен в
00:45:49
данном случае то есть мы берем wore
00:45:55
black collection collection присвоить
00:46:04
берем нашу исходную коллекцию коли
00:46:07
коллекцию вот этих вот продуктов
00:46:11
запомните ну давай давайте для лучшего
00:46:15
понимания пи-пи-пи перемен переименуем
00:46:21
коллекцию в продукты продукт мы берем
00:46:25
продукты и вы за мы вызываем метод
00:46:28
расширения select мы указываем что нам
00:46:31
нужно сделать взять продукт и указываем
00:46:39
по что мы этот продукт преобразую
00:46:43
продукт energy
00:46:47
то есть у нас будут взяты продукты из
00:46:52
всей коллекции и вот это вся коли
00:46:59
взяли всю коллекцию взяли оттуда один
00:47:02
элемент
00:47:03
вытащили оттуда его энергетическую
00:47:08
ценность положили в результирующую
00:47:10
коллекцию взяли следующий элемент
00:47:12
вытащили вытащили оттуда энергетическую
00:47:16
ценность положили в другой то есть на
00:47:18
входе у нас была коллекция продуктов на
00:47:21
выходе мы получили коллекцию целых чисел
00:47:24
и соответственно
00:47:29
сделаем так
00:47:41
поехали
00:47:45
естественно она у нас
00:47:48
слава закроется куда-нибудь увести
00:47:53
пониже чтобы не путаться вот то есть мы
00:48:00
по последняя наша завершающая коллекция
00:48:04
уже не продукты уже целые числа что что
00:48:08
и требовалось доказать что и требовалось
00:48:10
получить вот теперь теперь мы можем нашу
00:48:17
коллекцию упорядочивать упорядочивать
00:48:20
так как нам это нужно делается это с
00:48:23
помощью ордер buy его можно и здесь
00:48:27
использовать эту операцию нас есть точно
00:48:30
также указать ордер buy ой там .
00:48:36
energy
00:48:38
а
00:48:40
а можно суммировать есть операция с сам
00:48:42
мы дойдем до агрегатный это и без
00:48:46
проблем соответственно так мы упорядочим
00:48:50
нашу коллекцию по полю энергии как
00:48:52
помните у нас изначальная коллекция
00:48:55
неупорядоченная она по энергии она
00:48:59
добавлено по порядку по очереди а
00:49:02
значение энергетической энергетической
00:49:06
целостность ценности у нас меняется
00:49:10
соответственно мы можем это сделать war
00:49:16
buy ордер смотрите их две операции очень
00:49:29
похоже ордер buy и он 1 decressing ордер
00:49:33
buy у нас
00:49:34
от меньшего к большему упорядочивает
00:49:38
ордер buy decressing
00:49:40
нас идет соответственно по уменьшению то
00:49:45
есть начинаем большого идем к меньшему
00:49:48
ну давайте использовать обычный ордер
00:49:52
buy и опять-таки указываю наш продукт
00:49:57
продукт такой что продукт energy
00:50:02
и после этого опять выводим забыл .
00:50:13
естественно и меняем нашу коллекцию
00:50:21
то есть api а теперь у нас не
00:50:23
преобразуется мы оставили
00:50:27
не выполняли select у нас осталось
00:50:30
остался тот же тип но мы его
00:50:33
упорядочивают упорядочили
00:50:35
вот соответственно видите у нас продукты
00:50:38
теперь в списке находится не по порядку
00:50:42
но зато они упорядочены по
00:50:44
энергетической ценности и ценности от
00:50:48
меньшего к большему что не нужно было в
00:50:51
обратную сторону ордер body крессин и
00:50:53
все и все у нас прекрасно работает вот
00:50:59
как сделать если на вот нужно
00:51:02
упорядочить
00:51:05
22 условия добавить то есть кровь и если
00:51:09
у нас будут элементы совпадающими
00:51:15
значениями допустим как их упорядочить
00:51:19
если у нас допустим будет не такой
00:51:22
большой разброс
00:51:24
энергетической ценности как сейчас от 10
00:51:29
до 50 а коллекции у нас будет большая
00:51:35
значение маленькие
00:51:39
ха-ха
00:51:40
а так это просто обучающий пример у нас
00:51:48
будет от десяти до двенадцати то есть
00:51:50
вероятность совпадения очень высокая и
00:51:54
как после этого нам их упорядочить каких
00:51:59
как их между собой после этого порядок
00:52:04
дополнительно тогда мы можем добавлять
00:52:10
дополнительные условия упорядочивания а
00:52:13
не задается с помощью сын бай
00:52:26
. [музыка]
00:52:31
я тебя нету
00:52:36
пам пам
00:52:41
сейчас секунду
00:52:44
то
00:53:04
потому что я никто не к той строчке
00:53:06
применяя вот я лишь а потому что за
00:53:11
январь у нас может работать только после
00:53:14
того как мы сделали первоначальный
00:53:16
порядок упорядочивание то есть по после
00:53:21
ордер buy a
00:53:24
то есть только тогда мы можем брать наш
00:53:28
сын buy дополнительном и хотя цен он
00:53:34
также есть по decressing сэмпай
00:53:38
decressing и допустим продукт такой что
00:53:45
product name то есть мы упорядочу
00:53:49
упорядочили сначала по энергетической
00:53:54
ценности после этого мы соответственно
00:53:59
упорядочили
00:54:03
по имени в обратном порядке
00:54:12
о соответствии
00:54:13
нас все десятки и после этого восемь
00:54:17
семь шесть пять четыре три два
00:54:20
потом 0 потом 91 все правильно то есть
00:54:26
вот так мы можем забывать несколько
00:54:28
условий для упорядочивания так далее что
00:54:36
у нас еще есть
00:54:38
что забыл группировка вот теперь опять
00:54:43
таки сделаем сделаем разбиение на группы
00:54:47
это если в сеул и то есть здесь то есть
00:54:52
мы можем нашу коллекцию после этого скру
00:54:55
пировать используется грубой и указание
00:54:58
поле знак по которому у нас будет
00:55:01
разделение соответственно work круг buy
00:55:09
collection продукты которые мы разопьем
00:55:15
по энергетической ценности грубой
00:55:21
вот так вот и после этого у нас уже
00:55:30
кстати возвращается дней он умер и был
00:55:33
collection
00:55:34
вот этот грубой на возвращает а он
00:55:37
возвращает группе ровный элемент что это
00:55:41
означает то что у нас будет
00:55:53
так как я понял в коллекции наподобие
00:55:57
как база данных ну да база данных на
00:55:59
самом деле это те же самые коллекции это
00:56:02
но коллекция строчек базы данных здесь
00:56:05
это просто коллекция объектов точно
00:56:09
также этому с помощью link и можно
00:56:12
работать и с базой данных и в основном
00:56:14
как раз и манипуляция проходит
00:56:16
использование используется link чаще
00:56:19
всего при работе с базы с помощью мы
00:56:23
можем играть данный сортировать их и
00:56:25
делать все как на подобе запросов кбд да
00:56:27
да все это как раз таки у нас есть вот
00:56:31
соответственно теперь если мы хотим вы
00:56:34
есть наши сгруппированный элемент нам
00:56:37
уже нужно будет немножко
00:56:46
нужно будет немножко про похитрее
00:56:50
сделать смотрите у нас идет первая
00:56:54
коллекция
00:56:55
у нас идет разделение примерно как
00:57:00
как структура данных так у нас в универе
00:57:06
называли это свет список с висюльками то
00:57:10
есть у нас основной есть список и за
00:57:13
каждым элемента списка закреплен за
00:57:17
копили закреплена
00:57:18
другой другая коллекция элементов то
00:57:21
есть у нас единичка и там несколько
00:57:24
элементов которые у которых это поле
00:57:28
равно единичка двойка
00:57:31
еще допустим два элемента тройка пять
00:57:34
элементов четверка один элемент пятерка
00:57:37
5 мин то есть у нас получается такой
00:57:39
своеобразный список списков водка как бы
00:57:45
так соответственно нам уже надо
00:57:47
перебирать его с помощью цикла берем наш
00:57:52
любимый great war growth in group buy
00:58:00
collection вот здесь элемент гроб это у нас как раз
00:58:04
таки пара
00:58:11
в котором первый элемент является
00:58:17
является ключом а
00:58:24
[музыка]
00:58:26
первый элемент является ключом а второй
00:58:29
элемент является коллекцией содержащие
00:58:34
элементы
00:58:37
удовлетворяющие этому ключу то есть
00:58:41
теперь в нашей группе
00:58:45
еще раз запускаем наш great war on them
00:58:54
in друг и вот здесь вот то есть мы уже
00:58:59
перебираем
00:59:03
ну давайте здесь делаем вывод на консоль
00:59:12
ну по сути это словарь в котором 1
00:59:16
является ключ это значение
00:59:21
а элемент словаря это список это
00:59:25
примерно как
00:59:26
1 dictionary dictionary and list грубо
00:59:32
говоря вот если максимально упрощенной
00:59:35
упрощенное представление вот примерно
00:59:38
такая структура давайте напишу
00:59:44
dictionary
00:59:45
кен это тип 1 может тоже у нас меняться
00:59:50
потому что мы просто группируем по
00:59:52
ентому полю гру перевале бы по строкам у
00:59:56
у нас бы ключ был строковой то есть это
00:59:59
просто значение по которым мы групп
01:00:01
пировали и потом ног лист для простоты
01:00:08
лист
01:00:10
продукт вот примерно такая штука на
01:00:19
самом деле там не листа и номере был это
01:00:22
непринципиально вот для понимания вот
01:00:24
примерно так примерно так надеюсь это
01:00:27
понятно так соответственно мы выведем
01:00:43
ключ ключ :
01:00:56
громкий
01:00:58
это вот как раз и наше ключевое значение
01:01:01
а здесь мы уже выводим все элементы этой
01:01:09
коллекции здесь у нас будет
01:01:16
console red line
01:01:18
он давать для красоты сделаем слышали
01:01:30
это просто отступ
01:01:31
это символ символ табуляции для того
01:01:34
чтобы нас при выводе спустилась на
01:01:36
четыре элемента в сторону так и у нас
01:01:40
сайтом
01:01:45
после этого добавим еще одну red line
01:01:49
для отпуска
01:01:51
вот вот мы получили такую классную
01:01:55
коллекцию то есть мы выделили первую
01:02:00
группу выделили
01:02:01
вторую группу перебрали все элементы
01:02:04
первой группы перебрали все элементы
01:02:07
второй группы вот такая штука
01:02:12
это соответственно грубой наш
01:02:20
далее далее что нам нужно посмотреть
01:02:23
далее нам нужно посмотреть
01:02:25
очень простую операцию она называется
01:02:32
реверс она действительно простая
01:02:37
соответственно у нас она позволяет
01:02:39
просто перевернуть нашу коллекцию в
01:02:41
обратном порядке продукт реверс но
01:02:55
видите он есть стандартный реверс списка
01:02:57
потому что нас этот список ту войну мира
01:03:00
и было на самом деле реверс нет вот либо
01:03:03
метод расширения когда мы можем указать
01:03:15
хитры скажем так реверс но нам
01:03:18
достаточно просто вот так
01:03:24
white
01:03:29
реверс с
01:03:31
а это этом такой что ой там то есть мы
01:03:38
это не
01:03:49
но тут реверс а он не возвращает тип на
01:03:58
самом деле даже он нам ничего не
01:04:00
возвращает он просто да я забыл он так
01:04:04
вот вызывается без возвращаемого
01:04:06
значения он просто преобразует этот же
01:04:09
самый список он его разворачивает после
01:04:13
этого в дальнейшем у нас этот список
01:04:16
останется останется перевернутым
01:04:20
навсегда но или до тех пор пока мы его
01:04:22
обратно не реверсирует
01:04:30
для примера
01:04:37
так мы и до версии равале продукты
01:04:42
вот у нас соответственно они пошли в
01:04:45
обратном порядке
01:04:46
9 8 7 6 5 4 3 2 1 0
01:04:49
хотя изначально они были в прямом
01:04:51
порядке ok
01:04:54
реверс теперь две очень хорошие операции
01:04:58
которые часто тоже используются которые
01:05:01
надо знать это операция
01:05:03
и они соответственно что они позволяют
01:05:07
делать во первых они возвращают уже не
01:05:15
элемент коллекции они возвращают булево
01:05:19
значение
01:05:20
если первая операция у нас возвращает
01:05:25
значение true
01:05:27
если условие заданная в ней условию
01:05:31
заданному в ней соответствуют все
01:05:34
элементы коллекции
01:05:35
ул то есть если все продукты
01:05:39
равны энергетическая ценность равна 10
01:05:46
то только тогда она вернет true
01:05:50
во всех остальных случаях она будет
01:05:52
вращать полз и не этому соответственно
01:05:55
любой если хотя бы один элемент в
01:05:59
коллекции нам возвращает значение true
01:06:03
то она нам вернет она нам вернет true
01:06:12
если не один элемент коллекции не
01:06:16
удовлетворяют условию она нам возвращает
01:06:19
полз то есть ну давайте для примера
01:06:22
сделаем так в
01:06:30
олег квартал
01:06:35
соответственно что у нас будет продукт
01:06:40
продукт
01:06:42
ох ой ой там такой что
01:06:55
менеджера
01:06:56
равно 10
01:07:01
ну и давайте это сразу уводить на
01:07:04
консоль
01:07:12
и точно так же сделаем для и не и не то
01:07:28
есть вот у нас два условия
01:07:29
соответствующих первом случае требуется
01:07:32
чтобы у всех элементов коллекции
01:07:36
продуктов значение энергии было равно 10
01:07:41
2 же у нас требует что если хотя бы один
01:07:45
элемент коллекции продуктов равен 10
01:07:48
она она возвращает true катается на
01:07:51
ожидаемое то что у нас есть 10 есть 11
01:07:59
то есть значения у нас меняются и
01:08:04
что логично давайте дадим еще более
01:08:08
сурово и ограничение мы сделаем чтобы
01:08:10
все они типа были десятым вот только в
01:08:13
таком случае мы получаем
01:08:15
и первое значение true и второе значение
01:08:17
true теперь же если мы сделаем от 5 до 7
01:08:24
то есть поменяем вообще недостижимые
01:08:27
значений только так в этом случае у нас
01:08:29
будет фолз фолз булева логика все такое
01:08:35
привет из дискретной математики как раз
01:08:39
таки так
01:08:43
теперь еще одна логическая операция
01:08:46
которая у нас может присутствовать это у
01:08:51
нас операции контент контейн суп
01:08:54
проверяет вхождение элемента в коллекцию
01:08:58
то есть если у нас есть массив чисел
01:09:04
12345 и мы проверяем входит ли
01:09:06
пятерка в коллег в эту коллекцию то
01:09:11
соответственно на нам вернет true
01:09:13
если там 7 8 9 10 а мы проверяем пятерку
01:09:18
то она возвращает falls ну давайте но
01:09:26
уже проверяется сам элемент коллекции то
01:09:31
есть нам надо именно к продуктам это
01:09:36
применять то есть это у нас
01:09:38
операций can dance
01:09:45
[музыка]
01:09:56
так нам нужно взять какой-то элемент ну
01:09:59
давайте продукт ну здесь у нас 100
01:10:08
процентов как бы есть вхождение
01:10:10
то есть мы берем элементы самой
01:10:12
коллекции и проверяем
01:10:16
вот то есть он входит этот элемент сам
01:10:19
принадлежит этой коллекции
01:10:21
если же мы создадим какой-нибудь другой
01:10:24
продукт продукт ну оставим вот так то
01:10:44
есть этот это продукт не из коллекции
01:10:50
скобочка
01:10:51
но он здесь мы уже соответственно
01:10:53
получаем фолз то есть этот элемент прот
01:10:57
он не принадлежит этой коллекции
01:11:04
а далее
01:11:07
хорошо так теперь следующая операция
01:11:13
которая нам интересна и эта операция
01:11:17
называется distinct она
01:11:21
а
01:11:22
поверяет проверяет по ссылкам то есть
01:11:27
для ссылочных типов он ну он высоко
01:11:30
вызывает метод эквол по сути выполняет
01:11:34
сравнение по хэш-коды
01:11:37
элемента соответственно если ты
01:11:40
переопределить гэс хэш-код и
01:11:43
эквол то тогда ты можешь сделать
01:11:46
проверку по значению по умолчанию
01:11:51
проверяется по ссылке
01:11:53
ну а обычный элемент и q так как все в
01:11:57
шарпе проверяется на равенство при
01:12:01
переопределении этих методов уже можно
01:12:03
задать свою собственную логику
01:12:07
так теперь distinct distinct у нас
01:12:12
позволяет удалять элементы иска делать
01:12:16
коллекцию состоящую из уникальных
01:12:19
элементов
01:12:20
то есть если мы сделаем массив целых
01:12:23
чисел и там будет 123 123
01:12:28
вот так вот выглядеть 123 123 то на
01:12:34
выходе после distinct то у нас останется
01:12:37
1 2 3 в таком формате все дублирующие
01:12:41
элементы будут будут удалены из
01:12:45
коллекции повторяющиеся элементы у нас
01:12:49
их нету ну давайте ради интереса ради
01:12:55
интереса перед этим мы сейчас сделаем
01:12:58
коллекцию сделаем коллекцию с помощью
01:13:03
операции объединения объединим кое-как
01:13:06
коллекцию
01:13:07
само собой и и после этого выполнены
01:13:11
distinct
01:13:12
вот сейчас соответственно переходим к
01:13:15
операциям
01:13:17
desing то мы вернемся чуть позже а
01:13:20
сейчас переходим к операции со
01:13:22
множествами так это у нас
01:13:28
но начнем с объединение здесь нам как
01:13:32
раз таки было бы понятнее если бы у нас
01:13:35
был массив целых чисел war в ну или
01:13:44
список
01:13:50
и но один два три четыре у неё те скобки
01:14:09
а
01:14:12
да и к он тоже есть все там есть вот
01:14:18
соответственно сделали массив ну массив
01:14:22
это тоже коллекция список массив не
01:14:24
принципиально все что реализует айну
01:14:26
мира apple
01:14:27
мы с ним можем работать с помощью linq а
01:14:30
вот соответственно для этого массива мы
01:14:34
берем я объединяем его с самого сами
01:14:41
var ki union uniq он равно
01:14:49
рэй .
01:15:00
давай список черти не хочет показывать
01:15:12
[музыка]
01:15:18
так этому дает мне не дает
01:15:30
чего четырехмерным
01:15:33
съев не-не-не
01:15:41
а вот эдна невнимательно
01:15:51
вот так вот union
01:15:55
array поэтому не дает union с самим
01:16:01
собой ray
01:16:09
вот соответственно теперь для этого
01:16:13
сначала выведем просто изначальный
01:16:20
список и после этого объединенный
01:16:26
track
01:16:38
union union все поехали
01:16:44
distinct что до при объединении сама
01:16:49
сама с собой он не дал ну давайте так
01:16:54
v-ray
01:16:55
2
01:17:07
и 4 5 6 вот у нас получается два таких
01:17:15
две таких коллекции и мы объединяем
01:17:19
первую со второй
01:17:22
да он выполняет сразу distinct по
01:17:25
умолчанию без
01:17:30
без это
01:17:34
без дубликатов как видите то есть нас
01:17:37
появились появилась вторая коллекция
01:17:40
которая представлена объединением 1 и 2
01:17:46
так нам наверно надо union передает
01:17:50
дополнительный параметр так комплект для
01:17:57
сравнения значений
01:17:58
[музыка]
01:18:10
но для для сравнения то есть почему
01:18:13
сравнивать и ну ладно не будем пока
01:18:22
заморачиваться
01:18:24
так
01:18:27
так так так так так так если мы сделаем
01:18:35
1234
01:18:43
доведите используя campo
01:18:46
порно равенства по умолчанию то есть он
01:18:50
сравнивать если элементу на совпадают то
01:18:54
не дает
01:19:05
но давайте попробуем объединить два
01:19:10
различных множество
01:19:25
ardo
01:19:27
на тоже не пойдет ладно король
01:19:30
он у нас выполняет объединение двух
01:19:34
множеств следующее что мы можем делать с
01:19:39
множествами мы можем их делать
01:19:43
пересечении в данном случае когда у нас
01:19:47
есть совпадающие значения как раз таки
01:19:50
34 как видите вот здесь мы хотим
01:19:54
получить только то что то что у нас
01:20:00
совпадает
01:20:06
на тогда соответственно нам нужно
01:20:09
использовать другую операцию эта
01:20:14
операция называется intex intex
01:20:24
арай intersect
01:20:33
рейд 2
01:20:38
как
01:20:42
так на
01:20:43
записано вот так вот будет удобнее чтобы
01:20:48
не видеть между ними
01:20:51
пространство чтоб не запутаться секс
01:21:00
вот
01:21:02
в данном случае в данном случае мы как
01:21:04
раз таки и берем и получаем
01:21:09
то где они пересекаются мы получаем
01:21:12
значение 34 и теперь как раз таки нам
01:21:17
осталось получить разность это как раз
01:21:19
таки те значения которыми они не
01:21:21
пересекаются это значение 1 2 5 6 то
01:21:26
есть то что есть в первом но нету во
01:21:28
втором это что есть во втором но нет в
01:21:31
первом это у нас соответственно
01:21:41
на
01:21:42
это у нас сад
01:21:44
рация
01:21:47
xm except все время забываю как они
01:21:50
по-английски пели
01:21:52
пишутся в так вот array except
01:22:07
2 здесь мы получаем как раз таки
01:22:13
разность
01:22:18
а не здесь мы берем как вы ж поехали
01:22:40
вот соответственно здесь мы взяли те
01:22:42
элементы которые есть в первом множестве
01:22:47
но их нету во втором множестве
01:22:52
то есть мы из из первого множества вышли
01:22:57
второе множество
01:23:02
уже при необходимости мы можем из 2
01:23:05
множество вычесть первое множество
01:23:06
просто поменяй а вот эти вот элементы
01:23:09
между собой то есть из 2 мы будем
01:23:12
вычитать первое
01:23:13
тогда у нас поменяется 5-6
01:23:21
хорошо ну и наконец мы естественно можем
01:23:25
посчитать сумму средние максимальное и
01:23:30
минимальное значение это тоже без
01:23:33
проблем все мы можем прочитать сам это у
01:23:37
нас уже агрегатная операция сам рэй сам
01:23:48
мы получаем суммарное значение также мы
01:23:53
можем получить
01:23:55
минимальная мин при необходимости мы
01:24:07
естественно можем указывать также с
01:24:09
помощью
01:24:10
лямбда выражения по какому по полю мы
01:24:13
хотим смотреть то есть если бы это у нас
01:24:16
был были наши продукты мы могли бы
01:24:22
указать допустим то что это такой что
01:24:28
пнс и мы выбрали бы минимальный
01:24:34
минимальный продукт по энергетической
01:24:37
ценности точно также есть макс warmax
01:24:45
такой что такое что твои .
01:25:00
вот так же мы можем создавать
01:25:03
произвольные агрегатные функции которые
01:25:06
нам нужны мы это можем сделать с помощью
01:25:10
метода агрегат методы расширения
01:25:15
[музыка]
01:25:17
г.г.
01:25:27
допустим мы хотим выполнить про
01:25:30
произведение всех элементов коллекции
01:25:32
вычесать тогда мы берем а григорий .
01:25:47
агрегат указываем две перемены то есть
01:25:51
это будет результирующая фильме
01:25:54
переменная и переменная
01:25:57
следующего операции то есть у нас это
01:26:01
будет записано вот так x y такой-то
01:26:07
x умножить на y
01:26:15
соответственно таким образом мы и
01:26:17
получим мы получим агрегируются функции
01:26:24
который будет по очереди брать все
01:26:26
элементы коллекции перемножать по
01:26:30
очереди то есть в данном случае мы берем
01:26:32
для первого арея
01:26:35
это у нас будет 1 умножить на 2 умножить
01:26:37
на 3 умножить на 4 так проверять уже не
01:26:42
будем потом потому что но времени у нас
01:26:45
остается достаточно мало
01:26:48
так
01:26:49
теперь если мы хотим пропустить какое-то
01:26:53
количество мы
01:26:56
если мы хотим обработать не всю
01:26:59
коллекцию которую у нас есть а мы хотим
01:27:01
обработать только часть этой коллекции
01:27:06
если мы хотим взять сумму не всех
01:27:09
элементов массива а мы хотим взять
01:27:13
допустим только пропустив два пропустив
01:27:23
первый элемент и взять два элемента
01:27:26
после этого
01:27:27
то есть мы берем вот так 1 skip
01:27:37
опускает заданное количество элементов
01:27:39
то есть skip один данном случае у нас
01:27:44
будет это не вся
01:27:46
не весь массив ни один два три четыре а
01:27:49
будет взят соответственно два три четыре
01:27:54
мы пропускаем заданное количество
01:27:56
элементов
01:28:01
пропустили начали с двойки если будет
01:28:05
skip для array 2 мы пропустим первый
01:28:09
элемент а если мы напишем вот так вот
01:28:13
допустим смотрите a raid 2 step 2 что у
01:28:20
нас происходит мы
01:28:22
2 массива пропускаем два элемента и
01:28:27
остается у нас только пятерка и шестерка
01:28:29
и так далее вот вторая операция это у
01:28:35
нас
01:28:36
опираться тейк мы задаем сколько
01:28:40
элементов нам нужно взять из коллекции
01:28:44
то есть это он у нас уже идет
01:28:47
обрезание в другую сторону просто skip
01:28:53
11 или допустим track 2
01:29:01
так
01:29:02
привет вопрос по фильтру сам класс
01:29:05
collection в g такой что их wool с сам
01:29:10
класс при такой записи даже если сам
01:29:16
если сам фильтру ленку если я пишу
01:29:20
выражение то типа i get close релиз кайт
01:29:28
apple т.к. стоны и cool
01:29:31
так не все понял а в чем вопрос
01:29:46
возможно тут еще ошибки есть какие-то я
01:29:48
не совсем понял в чем вопрос-то
01:29:50
собственно папа по фильтру
01:29:54
так
01:29:56
что в данном случае что значит тейк мы
01:29:59
пропускаем 1 элемент и берем два
01:30:03
элемента из оставшейся коллекции то есть
01:30:06
операция тейк у нас задаёт
01:30:20
так мы
01:30:21
можно ли избежать ту лист так сам класс
01:30:26
collection the list p&g такое что g
01:30:32
эквол сам класс
01:30:37
ну переопределить корректно сравнение
01:30:41
но вот переопределить эквол
01:30:46
необязательно через
01:30:49
aig
01:30:50
квота был и cvut temple
01:30:55
ну короче не поднять не обязательно
01:30:57
переопределять ты можешь переопределить
01:31:00
gethashcode more пири-пири определить
01:31:03
сам метод эквол в принципе это связано с тем что у
01:31:09
тебя
01:31:13
уайну мире был не все не все возможности
01:31:21
есть которые есть у листа а вот есть
01:31:25
такая особенность вот как то так
01:31:31
соответственно protein если мы уберем
01:31:34
skip
01:31:35
мы не будем пропускать начальный элемент
01:31:38
если у нас его не будет то нас возьмётся
01:31:43
вот этот нулевой и первый элемент то
01:31:46
есть количество элементов
01:32:06
как а количество элементов которые мы
01:32:10
берем из коллекции сначала вот как бы
01:32:14
так так далее
01:32:23
далее далее далее у нас уже время скоро
01:32:27
кончается давайте рассмотрим еще
01:32:29
операция выбора которые нам важны
01:32:33
смотрите если нам вот из всей коллекции
01:32:37
нужно взять один элемент то мы можем
01:32:39
взять один элемент
01:32:41
не несколькими даже если быть точным 4
01:32:46
четырьмя способами то есть из всей
01:32:50
коллекции
01:32:51
вот возьмем наш в first
01:32:59
мы можем взять первый элемент
01:33:03
рэй обратите внимание обратите внимание
01:33:10
что у нас есть разновидность есть first
01:33:14
есть fills the default что под этим
01:33:16
подразумевается когда это нужно и в
01:33:19
каких случаях у нас происходит вот это
01:33:22
вот различие когда нужно к этой операции
01:33:27
обращаться если мы вызываем пёзд мы
01:33:32
берем первый элемент из коллекции наша
01:33:35
коллекция состоит из простых вот чисел 1
01:33:38
2 3 4 то есть мы берем первый элемент мы
01:33:41
берем единичку но если массив у нас
01:33:46
будет пустой то тогда мы словим
01:33:49
exception вот такая
01:33:53
особенность то есть если мы вызываем
01:33:55
фёст мы ожидаем то что хотя бы один
01:33:58
элемент в коллекции будет обязательно
01:34:02
вот чтобы не ловить exception в таких
01:34:05
случаях мы как раз таки можем
01:34:07
использовать фёст а default fall
01:34:13
то есть в том случае если коллекции у
01:34:16
нас будет пустая если там не будет ни
01:34:18
одного элемента она вернется значение
01:34:22
этой коллекции по умолчанию для in the
01:34:24
это будет 0 допустим для списка классов
01:34:28
это будет нал и так далее соответственно
01:34:34
это позволяет если мы говорим feast то
01:34:37
мы берем первый элемент из коллекции
01:34:41
точно так же у нас есть последний
01:34:44
элемент коллекции war last
01:34:46
но у вас точно так же у него есть
01:34:55
различие с тем что есть last last
01:34:58
дефолта есть последний элемент
01:35:01
четверка либо и
01:35:05
либо если он будет пустой у нас вылетит
01:35:09
эксепшен чтоб exception не вылетал мы
01:35:11
берем last дефолт смотрите по логике
01:35:15
когда какой использовать
01:35:17
если в вашем приложении ожидаемое то что
01:35:21
в списке должно что-то быть и вам надо
01:35:24
как-то реагировать когда у вас по
01:35:26
какому-то неожиданному стечению
01:35:29
обстоятельств сложилось так что что
01:35:36
соответственно почему-то у нас вернулся
01:35:39
там допустим пустой список нам она это
01:35:45
неправильное поведение и нам надо на
01:35:47
него отреагировать выкинуть exception
01:35:49
если это обычное поведение когда список
01:35:54
может быть пустым и соответственно на
01:35:58
это не надо выкидывать exception
01:36:00
используйте перегрузку с
01:36:03
фистула стадо falk сделают так что можно
01:36:09
так можно так вот обратите внимание
01:36:12
важную особенность то что если операция
01:36:16
в выборг а вот это вот самая первая
01:36:19
которую мы смотрели она всегда
01:36:21
возвращает коллекцию
01:36:25
ибо нал соответственно если ничего в
01:36:27
этой коли не ничего не выбралась я
01:36:32
кстати .
01:36:33
либо нам возвращает либо пустую
01:36:36
коллекцию это кстати интересно меньше
01:36:58
ты
01:37:08
на соответственно после этого мы
01:37:12
изолт
01:37:14
резалт у нас на она лавский
01:37:18
то есть здесь мы
01:37:19
[музыка]
01:37:29
так щас секунду изолт да он у нас не нал
01:37:39
значение в dota тех пор пока мы не
01:37:43
придем его не приведем к списку
01:37:47
если мы после этого приведем элемент
01:37:51
списка он вроде должен преобразоваться
01:37:53
урал tourist
01:37:55
[музыка]
01:38:03
ты
01:38:07
нет
01:38:09
получается результирующий списка список
01:38:12
с нулевым количеством элементов вот как
01:38:16
то так
01:38:19
точную удостоверились теперь все нужно
01:38:23
проверять на практике если не помню
01:38:25
всегда можно зайти и проверить
01:38:28
так с большими объемами данных пробовал
01:38:31
работать как с описаниями основного
01:38:34
потока для даже для быстрых операций
01:38:36
вроде сортировки да да на больших
01:38:40
объемов данных нас возможна сортировка
01:38:44
возможно зависание поэтому желательно
01:38:47
выводить просто вычисления в отдельный
01:38:50
поток синхронно и программирование с досками
01:38:53
мы без проблем можем это все
01:38:56
использовать и работать вот
01:39:00
соответственно здесь мы научились
01:39:03
выбирать первый элемент мы научились
01:39:06
выбирать последний элемент
01:39:08
если б нам всегда возвращает коллекцию
01:39:12
коллекцию даже впустую то есть или
01:39:15
коллекцию из одного элемента то вот эти
01:39:18
операции нам возвращают уже конкретный
01:39:21
элемент но это не все операции выбора
01:39:24
также у нас есть операция сингл которая
01:39:28
немножко отличается от first отвел stay
01:39:31
at last words сингл здесь мы как раз
01:39:42
таки уже указываем значение которое нам
01:39:47
надо
01:39:48
допустим так что прийти вот мы
01:40:00
ну здесь логичнее будет не на or и
01:40:05
смотреть а как раз таки на наших
01:40:08
продуктах на то есть мы хотим получить
01:40:17
элемент продукты
01:40:24
такой что лодок
01:40:35
такой что продукт .
01:40:39
и нам же равно 10 вот и теперь смотрите
01:40:48
в чем у нас происходит особенность мы
01:40:52
точно также можем сделать это и для
01:40:55
продукта
01:40:57
здесь и задать точно такое же условия то
01:41:03
есть мы из всей коллекции выберем первый
01:41:07
элемент 1 продукт у которого
01:41:12
энергетическая ценность будет равна 10
01:41:15
то есть вот у нас создался массив да то
01:41:22
есть создался список из 10 и 11 и мы
01:41:33
просто берём один единственный 1 их
01:41:36
может быть несколько в коллекции но мы
01:41:38
просто возьмем первые из них операция же
01:41:41
сингл требует чтобы этот элемент еще был
01:41:46
единственный
01:41:48
то есть если у нас в коллекции есть два
01:41:52
элемента со значением энергии равным 10
01:41:57
мы получаем exception
01:42:04
вот сад
01:42:05
потому что у нас списке продуктов есть и
01:42:09
несколько элементов с десятками
01:42:13
если бы он был один единственный мы
01:42:16
тогда бы соответственно получили все
01:42:18
корректно мы бы не получили exception
01:42:22
если встречается два и более элемента с
01:42:26
таким аргументам там и соответственно
01:42:30
получаем эксепшен точно также есть
01:42:34
default для того чтобы избежать
01:42:36
exception а когда коллекцию на 1 может
01:42:38
быть пустая когда нужно использовать
01:42:43
пёзд когда надо использовать сингл
01:42:47
соответственно если для тех же первичных
01:42:52
ключей
01:42:53
допустим мы ожидаем что в приложи
01:42:58
в приложении в базе данных будет один
01:43:02
единственный единственный экземпляр с
01:43:05
таким идентификатором не может такого
01:43:07
быть чтобы базе данных было два кортежа
01:43:11
с одним и тем же идентификатором в в
01:43:15
одной таблице
01:43:17
соответственно вот когда мы хотим если
01:43:21
такое случается у нас на самом деле не
01:43:24
случается но теоретически у нас
01:43:27
получается конфликт это неправильное
01:43:30
поведение и об этом надо давать
01:43:32
исключение обязательно оповещать
01:43:34
пользователя что он все слова поэтому
01:43:39
тогда нам нужен сингл если нам
01:43:41
достаточно первое
01:43:43
любого элемента удовлетворяющего к
01:43:47
условию первому то есть если хотя бы
01:43:50
один есть мы взяли пес а какой из них и
01:43:53
нам не принципиально там и
01:43:55
соответственно им и пользуемся и
01:43:59
последнюю операцию которую мы сегодня
01:44:03
рассмотрим это war band это равно .
01:44:22
элемент это
01:44:25
вот и что это значит а это получить
01:44:29
элемент по индексу по порядку нас
01:44:31
коллекции она упорядочена по номеру там
01:44:34
так как 8 0 1 2 3 4 5 вот соответственно
01:44:39
для здесь мы получаем 5 элемент по
01:44:45
очереди четвертый элемент по номеру
01:44:47
потому что нумерация у нас ведется с
01:44:50
нуля то есть взяли наш список и
01:44:54
отсчитали от начала
01:44:56
1 2 3 4 5 вот этот пятый элемент мы
01:44:59
взяли и получили по индексу по номеру
01:45:04
элемента в коллекции точно также есть со
01:45:11
значением дефолт если у нас там значение
01:45:15
оказалось больше то есть мы указали
01:45:18
индекс вне диапазона чтобы нам
01:45:20
свернулась значение по умолчанию они
01:45:23
выпало исключения но вот это кстати
01:45:25
немножко неправильное поведение может в
01:45:28
каких-то редких случаях это
01:45:29
действительно нужно но вообще если идет
01:45:32
обращение за границы диапазона об этом
01:45:35
надо говорить пользователю потому что
01:45:37
это неправильное поведение такого
01:45:39
поведения в приложении быть не должно
01:45:43
так хорошо на сегодня будем заканчивать
01:45:47
сейчас буду делать домашние писать
01:45:51
домашнее задание а вы соответственно
01:45:53
пишите вопросы если есть по теме и мы
01:45:59
соответственно посмотрим также сейчас
01:46:01
все за к мечу отправляю
01:46:04
покажу как раз таки там спрашивали вот
01:46:08
евгений писал по поводу работы с гитхаба
01:46:11
сейчас как раз таки покажу как я работаю
01:46:14
с кит хабом быстро за к мечу этот проект
01:46:17
в репозитории как это все происходит
01:46:22
итак давайте начнем с домашнего задания
01:46:30
машне создание
01:46:40
[музыка]
01:46:42
а что нам нужно сделать нам нужно в
01:46:46
вашей предметной области вашей
01:46:49
предметной области сделать работу
01:46:57
реализовать помощью попробовать все
01:47:21
операции все операции то есть
01:47:28
к пику знать без проблем за зайти на тот
01:47:33
шмита нет и посмотреть либо с помощью
01:47:36
помощника intellisense либо за я
01:47:40
допустим клавиши в12 в пространство имен
01:47:46
в link вот в эту библиотеку и посмотрев
01:47:51
все что в нем находится вот здесь мы
01:48:04
соответственно
01:48:07
можем посмотреть
01:48:13
вот таким вот а
01:48:15
сам все методы которые есть для а и
01:48:19
номера [ __ ]
01:48:23
окно отдельно я не вижу смысла
01:48:25
рассматривать не вижу смысла
01:48:29
рассматривать применении к базе данных
01:48:31
потому что работать он будет
01:48:33
приблизительно так же то есть у вас есть
01:48:38
вот эти же коллекции datasette и
01:48:41
дано на программном уровне там будет
01:48:46
будут небольшие различия
01:48:49
но на данном этапе это не важно я думаю
01:48:52
на может быть дальше мы рассмотрим
01:48:55
именно вот эти все тонкости которые
01:48:58
будут связаны при работе с линком при
01:49:02
работе с линком соответственно в с базой
01:49:06
данных то что на самом деле у нас идет
01:49:09
это все преобразование вы съели запрос
01:49:13
поэтому надо писать тоже линки правильно
01:49:16
link запросы чтобы получать более
01:49:19
оптимальный стиль запрос по а про то про
01:49:25
коллекции
01:49:26
как не замедлять создание коллекции и
01:49:30
все такое так много информации если
01:49:37
можно потом поподробнее об операторе
01:49:41
по ролям до выражение до поговорим
01:49:44
сложные вещи с ним творятся как передача
01:49:47
функций по параметру на исполнителем над
01:49:50
чужого метода да какое можно это
01:49:54
анонимные методы тоже можно делать
01:49:59
ok давайте теперь посмотрим работу с
01:50:04
гитхаба очень быстро вот соответственно
01:50:07
мы заходим
01:50:09
на наш репозиторий git ха-бушски
01:50:14
регистрируйтесь авторизуетесь
01:50:16
никаких сложностей нету было а вот
01:50:19
главная страничка гиги хоп . com после
01:50:23
авторизации вы попадаете вот на такую
01:50:25
страничку вот здесь мы видим список
01:50:27
репозиториев мы берем ножевая нажимаем
01:50:31
new и вводим имя нового репозитория
01:50:34
весом 20 после этого мы нажимаем
01:50:39
кнопочку create
01:50:40
истории создаем репозитории с таким
01:50:43
именем имя должно быть уникальным вот
01:50:46
теперь мы копируем эту строку сейчас
01:50:51
нашей базе торе и пустой как видите мы
01:50:53
копье копируем эту строку и возвращаем
01:50:57
возвращаемся visual studio обращаю
01:51:00
внимание что у меня сейчас не
01:51:01
установлено гид хоп extension с ней
01:51:05
работать еще проще здесь мы работаем со
01:51:09
встроенной стандартной
01:51:11
стандартным клиентам гита
01:51:13
который встроен по умолчанию вешалку
01:51:17
поэтому вообще ничего это будет сто
01:51:21
процентов работать у любого нажимаем вот
01:51:25
на эту кнопку добавить систему контроля
01:51:27
версий то есть когда у нас проект
01:51:29
изначально был создан он не был добавлен
01:51:31
систему контроля версий
01:51:32
мы добавляем систему контроля версий гид
01:51:37
да мы должны сохранить перед этим все
01:51:40
изменениям
01:51:41
вот он нам предлагает либо опубликовать
01:51:46
в git овский репозиториев ажуре
01:51:48
но мы этого делать не будем мы будем
01:51:52
отправлять свой собственный репозиторий
01:51:54
на гитхабе для это мы вот нажимаем
01:51:57
отправить вот да да в удаленный
01:51:59
репозиторий
01:52:00
нам открывается соответственно такая вот
01:52:03
строка
01:52:04
куда мы вводим наш адрес который
01:52:09
скопировали сайта и нажимаем
01:52:11
опубликовать в
01:52:13
при первой попытке опубликовать в этот
01:52:16
репозитории у нас будет показано
01:52:20
сообщение с окном авторизации нужно
01:52:23
ввести логин и нужно ввести пароль от
01:52:26
гитхаба
01:52:40
вот поэтому с
01:52:42
ответственно мы возвращаемся на наш урок
01:52:48
в
01:52:49
гитхабе обновляем нашу страничку и видим
01:52:52
что все изменения благополучно сюда
01:52:55
приехали вот весь код который у нас был
01:53:00
написан все здесь есть мы это все можем
01:53:04
получить так алексей это вопрос или утверждение
01:53:09
[музыка]
01:53:13
ну да так
01:53:15
можно записать в принципе
01:53:18
то есть это будет по сути она анонимный
01:53:20
метод
01:53:24
а
01:53:27
так-так-так соответственно если вопросов
01:53:31
больше нету буду рад если вы поставите
01:53:34
лайк под этим видео если не подписались
01:53:38
то подпишитесь на канал так же напоминаю
01:53:42
про ссылке в описании на группы на
01:53:47
telegram на контакт цен блок всё там
01:53:50
есть в описании переходите включайте
01:53:53
уведомления на ю тубе чтобы не
01:53:55
пропускать новые занятия включайте
01:53:59
подписывайтесь на уведомление вконтакте
01:54:01
в телеграме тоже
01:54:04
закрытый чат вступайте это будет полезно
01:54:10
так соответственно
01:54:18
это на сегодня все ждите до конца недели
01:54:22
ждите до конца недели соответственно
01:54:25
расписание следующих занятий
01:54:29
точно опубликую следующее занятие у нас
01:54:33
пройдет понедельник 28 января
01:54:36
здесь же на youtube и подключаетесь
01:54:39
будут ждать пока тему
01:54:41
не знаю но она точно будет вот так что
01:54:46
всем большое спасибо за то что
01:54:48
присутствовали на стриме смотрели
01:54:50
слушали задавали вопросы не забывайте о
01:54:53
практике обязательно попробуйте сделайте
01:54:56
домашнее задание попрактикуйтесь по
01:54:58
пишете код
01:54:59
своими руками если попробовать это будет
01:55:02
намного продуктивнее чем просто
01:55:04
посмотреть глазками
01:55:08
нужно обязательно все пробовать руками
01:55:11
надеюсь было достаточно интересно и
01:55:14
полезно всех буду ждать потом всем пока

Описание:

LINQ и работа с коллекциями в языке программирования C# На этом занятии мы познакомимся с языком запросов LINQ в языке программирования C# и научимся с его помощью обрабатывать коллекции. Он позволяет формировать запросы похожие на SQL для коллекций реализующих интерфейс IEnumerable и не только. Рассмотрим стандартную форму записи, а также методы расширений LINQ. Изучим основные методы, такие как Select, Where, OrderBy, GroupBy, Reverse, All, Any, Contains, Distinct, Count, Sum, Average, Min, Max, Take, Skip, Concat, First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, Last, LastOrDefault. ----------- ПОДПИШИСЬ на соцсети: 🔴 TELEGRAM: https://ttttt.me/joinchat/AAAAAEOzZfpJvCkPaOyurA 🔴 VK: https://bit.ly/vk_codeblog 🔴 INSTAGRAM: https://www.facebook.com/unsupportedbrowser 🔴 Яндекс Дзен: https://dzen.ru/codeblog 🔴 FACEBOOK: https://www.facebook.com/unsupportedbrowser 🔴 TWITTER: http://bit.ly/twit_codeblog 🔴 Мой блог: https://bit.ly/site_codeblog ----------- ПОДДЕРЖИ развитие CODE BLOG: 💲 Донат: https://www.donationalerts.com/r/shwanoff 💲 Спонсорство: https://www.patreon.com/codeblog ----------- СМОТРИ мои обучающие курсы: 👉 УЧИМ ШАРП: https://www.youtube.com/watch?v=p9QxqrwkPbA&list=PLIIXgDT0bKw4OmiZ9yGmShKsY0XncViZ8 👉 ПРАКТИЧЕСКИЙ ИНТЕНСИВ #1: https://www.youtube.com/watch?v=eQph6ZT4X5w&list=PLIIXgDT0bKw7AOFNyc2_FGYDj_52AclvV 👉 ПРАКТИЧЕСКИЙ ИНТЕНСИВ #2: https://www.youtube.com/watch?v=XHuUN1u8ZPE&list=PLIIXgDT0bKw4M1_5JX0LRHdjQXSR0Upfw 👉 СТРУКТУРЫ ДАННЫХ: https://www.youtube.com/watch?v=hZYQmNJBsKM&list=PLIIXgDT0bKw4DB9toGU73ntyYIZV7aJi5 👉 АЛГОРИТМЫ СОРТИРОВКИ: https://www.youtube.com/watch?v=PD1Nn4fHcts&list=PLIIXgDT0bKw4n6pwBjymd3wCPyQ3_SLMo 👉 ОТВЕТЫ НА ВОПРОСЫ: https://www.youtube.com/watch?v=Xb1prk0to9I&list=PLIIXgDT0bKw7oKRr2c1n-e_dUgR8Aqdsi 👉 IT ПЕРЕОЗВУЧКА: https://www.youtube.com/watch?v=Q1VAd1xUtxI&list=PLIIXgDT0bKw5O-kShBcWT0bk7Ev8lZYmV 👉 НЕЙРОННАЯ СЕТЬ: https://www.youtube.com/watch?v=woohvQE73AI&list=PLIIXgDT0bKw7VnfMl5wWW_kjmmCrHjfvb 👉 ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ: https://www.youtube.com/watch?v=RsU2K5Cuu_U&list=PLIIXgDT0bKw5gOlwxV1TigVAeOPhR6kes 👉 CODE REVIEW: https://www.youtube.com/watch?v=hhYZEts63rQ&list=PLIIXgDT0bKw6FSCulrNWzWMRf0cH0fz0_ 👉 CLR via C#: https://www.youtube.com/watch?v=m_nvUAXdbOY&list=PLIIXgDT0bKw6i4jQkHVgIrnsP-DcvBieq ----------- Кстати, меня зовут Шванов Вадим, и я профессиональный .NET разработчик с 2011 года и автор этого канала CODE BLOG. Я рассказываю про IT технологии и веду абсолютно бесплатный курс по языку C# с нуля. В его рамках мы рассмотрим как базовый синтаксис языка C Sharp, так и его практическое применение и специальные технологии, такие как ASP .NET, .NET Core, ASP.NET MVC, Unity, WPF, структуры данных и алгоритмы, с#, dotnet, паттерны проектирования, информатика, csharp, программное обеспечение и многое другое. Для меня важно не только показать практическое применение языка си шарп, но и объяснить основную идею и базовые понятия Computer Science. В качестве основного инструмента разработки используется Visual Studio c# и проекты на Visual c#. Если вам нравятся такие каналы как хауди хо, айти борода, Soer или ExtremeCode, то здесь вам точно понравится. -----------

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "LINQ и работа с коллекциями в C# - Учим Шарп #20"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "LINQ и работа с коллекциями в C# - Учим Шарп #20" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "LINQ и работа с коллекциями в C# - Учим Шарп #20"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "LINQ и работа с коллекциями в C# - Учим Шарп #20" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "LINQ и работа с коллекциями в C# - Учим Шарп #20"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "LINQ и работа с коллекциями в C# - Учим Шарп #20"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.