SlideShare a Scribd company logo
1 of 17
for Binary Studio Academy
Beseda Dmitriy
skype: dmitriy.b_binary
email: dmitriy.beseda@binary-studio.com
Data Structures and
LINQ
binary-studio.com
С чего все начинается
“В унифицированной системе
типов C# все типы,
предопределенные и
пользовательские, ссылочные
типы и типы значений,
наследуют непосредственно или
косвенно от Object. Переменным
типа object можно назначать
значения любых типов.” (MSDN)
Методы:
- Equals
- Finalize
- GetHashCode
- GetType
- MemberwiseClone
- ReferenceEquals
- ToString
Тип ссылки и значения
Типы по значению
- Целочисленные значения(Int,
byte, char, uint ...)
- Числа с плавающей запятой (float,
double)
- Boolean
- Структуры
- Перечисления (enum)
Ссылочный тип
- class
- interface
- delegate
- dynamic
- Object
- string
Приведение типов
- Неявное
- Явное
- Ковариация
Тип ссылки и значения
Тип по занчению
Указатель на
ссылочный тип
Ссылочный тип
Стек Куча
Тип ссылки и значения
Упаковка - используется для хранения типов значений в куче со сбором мусора.
Распаковка является явным преобразованием из типа object в тип значения или
из типа интерфейса в тип значения, реализующего этот интерфейс.
int i = 123; // a value type
object o = i; // boxing
int j = (int) o; // unboxing
Типы списков
System.Collections:
● ArrayList
● BitArray
● Queue
● SortedList
● Stack
● Hashtable
Недостатки:
- Низкая производительность
- Не безопасный тип данных
System.Collections.Generic:
● List<T>
● LinkedList<T>
● Dictionary<TKey, TValue>
● Queue<T>
● Stack<T>
IEnumerable
● GetEnumerator()
● Cast<TResult>
● OfType<TResult>()
● AsParallel
● AsQueryable
IEnumerator:
● Object Current()
● MoveNext()
● Reset()
Array
- Происходит от System.Array
- IEnumerable, IList, ICollection
- Данные должны быть одного типа
- Размер фиксированый
- Прямой доступ в память
- Массивы могут быть двумерными и более
List<T>
- Строго типизированный
- Динамический размер
- Доступ по Индексу
- Типобезопасный
- Высокая скорость
- Не требует упаковки
Collection<T>
- Удобно использовать когда нужно
реагировать на изменение коллекции
путем переопределения методов
ClearItems, InsertItems, RemoveItems,
SetItems.
- Доступ по индексу.
- Разрешает дублирование.
LinkedList<T>
- Нет индекса. Текущий элемент имеет доступ к
следующему и предыдущему элементам
- Пользователь может удалить узлы и повторно их
вставить — как в тот же самый список, так и в
другой список. В результате в куче не размещается
ни одного дополнительного объекта.
- Более быстрые операции вставки и удаления.
- Нет прямого доступа.
Dicitionary<TKey, TValue>
- Коллекция состоит из ключей и значений
- Ключ менять нельзя
- Быстрый доступ к элементу по ключу
(используется hash-таблица)
- Ключ должен быть уникальным
- Тип ключа может быть числом, строкой,
объектом и т.д.
LINQ
Language INtegrated Query
LINQ Data Sources
LINQ in ADO.NET
LINQ
to XML
LINQ
to Objects
LINQ
to DataSet
LINQ
to Entities
LINQ
to SQL
LINQ
to Nhibernate
LINQ
- Представляет собой многочисленные
расширяющие методы.
- Имеет 2 синтаксиса.
- Может использовать анонимные типы.
- Отложенное выполнение.
LINQ
Выборка с условием list.Where(...)
Проекция list.Select(...), list.SelectMany(...)
Сортировка list.OrderBy(...).ThenBy(...)
Группировка list.GroupBy(...)
Аггрегация list.Aggregate(...), list.Sum(), list.Max(), list.Min(), list.Count()
Конвертация list.ToString(), list.ToList(), list.ToArray()
Приведение типов list.Cast<type>(), list.OfType<type>()
Проверка условия list.Any(...), list.All(...)
Выдление элемента list.Element(...), list.ElementAt(...)
Выбор подмножества list.Distinct(), list.Union(), list.Intersect(), list.Except(...)
Полезные материалы
- LINQPad
- OData to practice
- Understanding LINQ C#
- Resharper

More Related Content

Viewers also liked

Accompagnement des collectivités locales à l’ouverture des données publiques ...
Accompagnement des collectivités locales à l’ouverture des données publiques ...Accompagnement des collectivités locales à l’ouverture des données publiques ...
Accompagnement des collectivités locales à l’ouverture des données publiques ...Les Interconnectés
 
IT consulting presentation By Chad Ostreiche
IT consulting  presentation By Chad OstreicheIT consulting  presentation By Chad Ostreiche
IT consulting presentation By Chad OstreicheChad Ostreicher
 
la mujersamaritana
la mujersamaritanala mujersamaritana
la mujersamaritanaKareneduc
 
124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...
124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...
124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...Cristian Randieri PhD
 
Academy PRO: HTML5 API Introduction
Academy PRO: HTML5 API IntroductionAcademy PRO: HTML5 API Introduction
Academy PRO: HTML5 API IntroductionBinary Studio
 

Viewers also liked (12)

Alignment
AlignmentAlignment
Alignment
 
Mayur Resume
Mayur ResumeMayur Resume
Mayur Resume
 
Vocabulary (1)
Vocabulary (1)Vocabulary (1)
Vocabulary (1)
 
Accompagnement des collectivités locales à l’ouverture des données publiques ...
Accompagnement des collectivités locales à l’ouverture des données publiques ...Accompagnement des collectivités locales à l’ouverture des données publiques ...
Accompagnement des collectivités locales à l’ouverture des données publiques ...
 
IT consulting presentation By Chad Ostreiche
IT consulting  presentation By Chad OstreicheIT consulting  presentation By Chad Ostreiche
IT consulting presentation By Chad Ostreiche
 
la mujersamaritana
la mujersamaritanala mujersamaritana
la mujersamaritana
 
Ruta Magica Chignahuapan Zacatlan
Ruta Magica Chignahuapan ZacatlanRuta Magica Chignahuapan Zacatlan
Ruta Magica Chignahuapan Zacatlan
 
124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...
124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...
124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...
 
Arreglos de rosas
Arreglos de rosasArreglos de rosas
Arreglos de rosas
 
Cobrança a clientes
Cobrança a clientesCobrança a clientes
Cobrança a clientes
 
Academy PRO: HTML5 API Introduction
Academy PRO: HTML5 API IntroductionAcademy PRO: HTML5 API Introduction
Academy PRO: HTML5 API Introduction
 
Lesson plan 8 weigum
Lesson plan 8   weigumLesson plan 8   weigum
Lesson plan 8 weigum
 

Similar to Binary Studio Academy 2016. Data structures and LINQ

C++ осень 2012 лекция 4
C++ осень 2012 лекция 4C++ осень 2012 лекция 4
C++ осень 2012 лекция 4Technopark
 
C++ осень 2013 лекция 6
C++ осень 2013 лекция 6C++ осень 2013 лекция 6
C++ осень 2013 лекция 6Technopark
 
C# Desktop. Занятие 05.
C# Desktop. Занятие 05.C# Desktop. Занятие 05.
C# Desktop. Занятие 05.Igor Shkulipa
 
C++ осень 2012 лекция 5
C++ осень 2012 лекция 5C++ осень 2012 лекция 5
C++ осень 2012 лекция 5Technopark
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.Igor Shkulipa
 
Типы данных
Типы данныхТипы данных
Типы данныхMonsterXX
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2Technopark
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
презентация 4. введение в css
презентация 4. введение в cssпрезентация 4. введение в css
презентация 4. введение в cssRusov1
 

Similar to Binary Studio Academy 2016. Data structures and LINQ (10)

C++ осень 2012 лекция 4
C++ осень 2012 лекция 4C++ осень 2012 лекция 4
C++ осень 2012 лекция 4
 
C++ осень 2013 лекция 6
C++ осень 2013 лекция 6C++ осень 2013 лекция 6
C++ осень 2013 лекция 6
 
C# Desktop. Занятие 05.
C# Desktop. Занятие 05.C# Desktop. Занятие 05.
C# Desktop. Занятие 05.
 
C++ осень 2012 лекция 5
C++ осень 2012 лекция 5C++ осень 2012 лекция 5
C++ осень 2012 лекция 5
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Типы данных
Типы данныхТипы данных
Типы данных
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
презентация 4. введение в css
презентация 4. введение в cssпрезентация 4. введение в css
презентация 4. введение в css
 

More from Binary Studio

Academy PRO: D3, part 3
Academy PRO: D3, part 3Academy PRO: D3, part 3
Academy PRO: D3, part 3Binary Studio
 
Academy PRO: D3, part 1
Academy PRO: D3, part 1Academy PRO: D3, part 1
Academy PRO: D3, part 1Binary Studio
 
Academy PRO: Cryptography 3
Academy PRO: Cryptography 3Academy PRO: Cryptography 3
Academy PRO: Cryptography 3Binary Studio
 
Academy PRO: Cryptography 1
Academy PRO: Cryptography 1Academy PRO: Cryptography 1
Academy PRO: Cryptography 1Binary Studio
 
Academy PRO: Advanced React Ecosystem. MobX
Academy PRO: Advanced React Ecosystem. MobXAcademy PRO: Advanced React Ecosystem. MobX
Academy PRO: Advanced React Ecosystem. MobXBinary Studio
 
Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Binary Studio
 
Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Binary Studio
 
Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1Binary Studio
 
Binary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: JS team project - OrderlyBinary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: JS team project - OrderlyBinary Studio
 
Binary Studio Academy 2017: .NET team project - Unicorn
Binary Studio Academy 2017: .NET team project - UnicornBinary Studio Academy 2017: .NET team project - Unicorn
Binary Studio Academy 2017: .NET team project - UnicornBinary Studio
 
Academy PRO: React native - miscellaneous
Academy PRO: React native - miscellaneousAcademy PRO: React native - miscellaneous
Academy PRO: React native - miscellaneousBinary Studio
 
Academy PRO: React native - publish
Academy PRO: React native - publishAcademy PRO: React native - publish
Academy PRO: React native - publishBinary Studio
 
Academy PRO: React native - navigation
Academy PRO: React native - navigationAcademy PRO: React native - navigation
Academy PRO: React native - navigationBinary Studio
 
Academy PRO: React native - building first scenes
Academy PRO: React native - building first scenesAcademy PRO: React native - building first scenes
Academy PRO: React native - building first scenesBinary Studio
 
Academy PRO: React Native - introduction
Academy PRO: React Native - introductionAcademy PRO: React Native - introduction
Academy PRO: React Native - introductionBinary Studio
 
Academy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyAcademy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyBinary Studio
 
Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 4Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 4Binary Studio
 
Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 3Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 3Binary Studio
 
Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 2Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 2Binary Studio
 
Academy PRO: Docker. Lecture 1
Academy PRO: Docker. Lecture 1Academy PRO: Docker. Lecture 1
Academy PRO: Docker. Lecture 1Binary Studio
 

More from Binary Studio (20)

Academy PRO: D3, part 3
Academy PRO: D3, part 3Academy PRO: D3, part 3
Academy PRO: D3, part 3
 
Academy PRO: D3, part 1
Academy PRO: D3, part 1Academy PRO: D3, part 1
Academy PRO: D3, part 1
 
Academy PRO: Cryptography 3
Academy PRO: Cryptography 3Academy PRO: Cryptography 3
Academy PRO: Cryptography 3
 
Academy PRO: Cryptography 1
Academy PRO: Cryptography 1Academy PRO: Cryptography 1
Academy PRO: Cryptography 1
 
Academy PRO: Advanced React Ecosystem. MobX
Academy PRO: Advanced React Ecosystem. MobXAcademy PRO: Advanced React Ecosystem. MobX
Academy PRO: Advanced React Ecosystem. MobX
 
Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4
 
Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2
 
Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1
 
Binary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: JS team project - OrderlyBinary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: JS team project - Orderly
 
Binary Studio Academy 2017: .NET team project - Unicorn
Binary Studio Academy 2017: .NET team project - UnicornBinary Studio Academy 2017: .NET team project - Unicorn
Binary Studio Academy 2017: .NET team project - Unicorn
 
Academy PRO: React native - miscellaneous
Academy PRO: React native - miscellaneousAcademy PRO: React native - miscellaneous
Academy PRO: React native - miscellaneous
 
Academy PRO: React native - publish
Academy PRO: React native - publishAcademy PRO: React native - publish
Academy PRO: React native - publish
 
Academy PRO: React native - navigation
Academy PRO: React native - navigationAcademy PRO: React native - navigation
Academy PRO: React native - navigation
 
Academy PRO: React native - building first scenes
Academy PRO: React native - building first scenesAcademy PRO: React native - building first scenes
Academy PRO: React native - building first scenes
 
Academy PRO: React Native - introduction
Academy PRO: React Native - introductionAcademy PRO: React Native - introduction
Academy PRO: React Native - introduction
 
Academy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyAcademy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis Beketsky
 
Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 4Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 4
 
Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 3Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 3
 
Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 2Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 2
 
Academy PRO: Docker. Lecture 1
Academy PRO: Docker. Lecture 1Academy PRO: Docker. Lecture 1
Academy PRO: Docker. Lecture 1
 

Binary Studio Academy 2016. Data structures and LINQ

  • 1. for Binary Studio Academy Beseda Dmitriy skype: dmitriy.b_binary email: dmitriy.beseda@binary-studio.com Data Structures and LINQ binary-studio.com
  • 2. С чего все начинается “В унифицированной системе типов C# все типы, предопределенные и пользовательские, ссылочные типы и типы значений, наследуют непосредственно или косвенно от Object. Переменным типа object можно назначать значения любых типов.” (MSDN) Методы: - Equals - Finalize - GetHashCode - GetType - MemberwiseClone - ReferenceEquals - ToString
  • 3. Тип ссылки и значения Типы по значению - Целочисленные значения(Int, byte, char, uint ...) - Числа с плавающей запятой (float, double) - Boolean - Структуры - Перечисления (enum) Ссылочный тип - class - interface - delegate - dynamic - Object - string
  • 4. Приведение типов - Неявное - Явное - Ковариация
  • 5. Тип ссылки и значения Тип по занчению Указатель на ссылочный тип Ссылочный тип Стек Куча
  • 6. Тип ссылки и значения Упаковка - используется для хранения типов значений в куче со сбором мусора. Распаковка является явным преобразованием из типа object в тип значения или из типа интерфейса в тип значения, реализующего этот интерфейс. int i = 123; // a value type object o = i; // boxing int j = (int) o; // unboxing
  • 7. Типы списков System.Collections: ● ArrayList ● BitArray ● Queue ● SortedList ● Stack ● Hashtable Недостатки: - Низкая производительность - Не безопасный тип данных System.Collections.Generic: ● List<T> ● LinkedList<T> ● Dictionary<TKey, TValue> ● Queue<T> ● Stack<T>
  • 8. IEnumerable ● GetEnumerator() ● Cast<TResult> ● OfType<TResult>() ● AsParallel ● AsQueryable IEnumerator: ● Object Current() ● MoveNext() ● Reset()
  • 9. Array - Происходит от System.Array - IEnumerable, IList, ICollection - Данные должны быть одного типа - Размер фиксированый - Прямой доступ в память - Массивы могут быть двумерными и более
  • 10. List<T> - Строго типизированный - Динамический размер - Доступ по Индексу - Типобезопасный - Высокая скорость - Не требует упаковки
  • 11. Collection<T> - Удобно использовать когда нужно реагировать на изменение коллекции путем переопределения методов ClearItems, InsertItems, RemoveItems, SetItems. - Доступ по индексу. - Разрешает дублирование.
  • 12. LinkedList<T> - Нет индекса. Текущий элемент имеет доступ к следующему и предыдущему элементам - Пользователь может удалить узлы и повторно их вставить — как в тот же самый список, так и в другой список. В результате в куче не размещается ни одного дополнительного объекта. - Более быстрые операции вставки и удаления. - Нет прямого доступа.
  • 13. Dicitionary<TKey, TValue> - Коллекция состоит из ключей и значений - Ключ менять нельзя - Быстрый доступ к элементу по ключу (используется hash-таблица) - Ключ должен быть уникальным - Тип ключа может быть числом, строкой, объектом и т.д.
  • 14. LINQ Language INtegrated Query LINQ Data Sources LINQ in ADO.NET LINQ to XML LINQ to Objects LINQ to DataSet LINQ to Entities LINQ to SQL LINQ to Nhibernate
  • 15. LINQ - Представляет собой многочисленные расширяющие методы. - Имеет 2 синтаксиса. - Может использовать анонимные типы. - Отложенное выполнение.
  • 16. LINQ Выборка с условием list.Where(...) Проекция list.Select(...), list.SelectMany(...) Сортировка list.OrderBy(...).ThenBy(...) Группировка list.GroupBy(...) Аггрегация list.Aggregate(...), list.Sum(), list.Max(), list.Min(), list.Count() Конвертация list.ToString(), list.ToList(), list.ToArray() Приведение типов list.Cast<type>(), list.OfType<type>() Проверка условия list.Any(...), list.All(...) Выдление элемента list.Element(...), list.ElementAt(...) Выбор подмножества list.Distinct(), list.Union(), list.Intersect(), list.Except(...)
  • 17. Полезные материалы - LINQPad - OData to practice - Understanding LINQ C# - Resharper

Editor's Notes

  1. Ковариантность для массивов позволяет неявно преобразовывать массив производного типа большей глубины наследования в массив производного типа меньшей глубины наследования. Однако такая операция не является типобезопасной
  2. Упаковка - используется для хранения типов значений в куче со сбором мусора. Упаковка представляет собой неявное преобразование типа значения в тип object или в любой другой тип интерфейса, реализуемый этим типом значения. При упаковке типа значения в куче выделяется экземпляр объекта и выполняется копирование значения в этот новый объект. Распаковка является явным преобразованием из типа object в тип значения или из типа интерфейса в тип значения, реализующего этот интерфейс. Операция распаковки состоит из следующих действий: проверка экземпляра объекта на то, что он является упакованным значением заданного типа значения; копирование значения из экземпляра в переменную типа значения.