SlideShare a Scribd company logo
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 (12)

PPTX
Alignment
South Robeson High
 
PDF
Mayur Resume
Mayur Badnerkar
 
PPTX
Vocabulary (1)
Vanesa Zelicovici
 
PDF
Accompagnement des collectivités locales à l’ouverture des données publiques ...
Les Interconnectés
 
PPT
IT consulting presentation By Chad Ostreiche
Chad Ostreicher
 
PDF
la mujersamaritana
Kareneduc
 
PPTX
Ruta Magica Chignahuapan Zacatlan
Joseph Morales Herrero
 
PDF
124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...
Cristian Randieri PhD
 
PPTX
Arreglos de rosas
Lizeth guerrero revelo
 
PPTX
Cobrança a clientes
Celso Frederico Lago
 
PPTX
Academy PRO: HTML5 API Introduction
Binary Studio
 
PDF
Lesson plan 8 weigum
Carolina Weigum
 
Mayur Resume
Mayur Badnerkar
 
Vocabulary (1)
Vanesa Zelicovici
 
Accompagnement des collectivités locales à l’ouverture des données publiques ...
Les Interconnectés
 
IT consulting presentation By Chad Ostreiche
Chad Ostreicher
 
la mujersamaritana
Kareneduc
 
Ruta Magica Chignahuapan Zacatlan
Joseph Morales Herrero
 
124 SISTEMI DI SICUREZZA SEMPRE PIÙ “VERSO LA NUVOLA” - Safety & Security N. ...
Cristian Randieri PhD
 
Arreglos de rosas
Lizeth guerrero revelo
 
Cobrança a clientes
Celso Frederico Lago
 
Academy PRO: HTML5 API Introduction
Binary Studio
 
Lesson plan 8 weigum
Carolina Weigum
 

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

PDF
C# Desktop. Занятие 05.
Igor Shkulipa
 
PPTX
Collections
DmitryTrushkin
 
PPTX
Java Core. Lecture# 4. Collections.
Anton Moiseenko
 
PDF
Алгоритмы и структуры данных осень 2013 лекция 2
Technopark
 
PDF
Абстрактные типы данных. Списки
Olga Maksimenkova
 
PDF
C# Desktop. Занятие 13.
Igor Shkulipa
 
PPTX
Power of LINQ
Juri Mulenko
 
PPTX
C#. От основ к эффективному коду
Vasiliy Deynega
 
PDF
AlgoCollections (RUS)
Anton Bukov
 
PDF
Алгоритмы и структуры данных весна 2014 лекция 2
Technopark
 
PDF
ОПК № 5 – Составные типы данных, списки
Vladimir Parfinenko
 
PPT
Lecture 2
Anastasia Snegina
 
PDF
Абстрактные типы данных, контейнеры и списки
Olga Maksimenkova
 
PDF
C++ Базовый. Занятие 06.
Igor Shkulipa
 
PPT
презентация конспекта лекций
student_kai
 
PPT
List - списки
Unguryan Vitaliy
 
PPTX
десант презентация
Андрей Голованов
 
PDF
Игорь Лабутин «Коллекционируем данные в .NET»
SpbDotNet Community
 
PPT
Net 3.0 & Linq
Constantin Kichinsky
 
C# Desktop. Занятие 05.
Igor Shkulipa
 
Collections
DmitryTrushkin
 
Java Core. Lecture# 4. Collections.
Anton Moiseenko
 
Алгоритмы и структуры данных осень 2013 лекция 2
Technopark
 
Абстрактные типы данных. Списки
Olga Maksimenkova
 
C# Desktop. Занятие 13.
Igor Shkulipa
 
Power of LINQ
Juri Mulenko
 
C#. От основ к эффективному коду
Vasiliy Deynega
 
AlgoCollections (RUS)
Anton Bukov
 
Алгоритмы и структуры данных весна 2014 лекция 2
Technopark
 
ОПК № 5 – Составные типы данных, списки
Vladimir Parfinenko
 
Абстрактные типы данных, контейнеры и списки
Olga Maksimenkova
 
C++ Базовый. Занятие 06.
Igor Shkulipa
 
презентация конспекта лекций
student_kai
 
List - списки
Unguryan Vitaliy
 
десант презентация
Андрей Голованов
 
Игорь Лабутин «Коллекционируем данные в .NET»
SpbDotNet Community
 
Net 3.0 & Linq
Constantin Kichinsky
 
Ad

More from Binary Studio (20)

PPTX
Academy PRO: D3, part 3
Binary Studio
 
PPTX
Academy PRO: D3, part 1
Binary Studio
 
PPTX
Academy PRO: Cryptography 3
Binary Studio
 
PPTX
Academy PRO: Cryptography 1
Binary Studio
 
PPTX
Academy PRO: Advanced React Ecosystem. MobX
Binary Studio
 
PPTX
Academy PRO: Docker. Part 4
Binary Studio
 
PPTX
Academy PRO: Docker. Part 2
Binary Studio
 
PPTX
Academy PRO: Docker. Part 1
Binary Studio
 
PPTX
Binary Studio Academy 2017: JS team project - Orderly
Binary Studio
 
PPTX
Binary Studio Academy 2017: .NET team project - Unicorn
Binary Studio
 
PPTX
Academy PRO: React native - miscellaneous
Binary Studio
 
PPTX
Academy PRO: React native - publish
Binary Studio
 
PPTX
Academy PRO: React native - navigation
Binary Studio
 
PPTX
Academy PRO: React native - building first scenes
Binary Studio
 
PPTX
Academy PRO: React Native - introduction
Binary Studio
 
PPTX
Academy PRO: Push notifications. Denis Beketsky
Binary Studio
 
PPTX
Academy PRO: Docker. Lecture 4
Binary Studio
 
PPTX
Academy PRO: Docker. Lecture 3
Binary Studio
 
PPTX
Academy PRO: Docker. Lecture 2
Binary Studio
 
PPTX
Academy PRO: Docker. Lecture 1
Binary Studio
 
Academy PRO: D3, part 3
Binary Studio
 
Academy PRO: D3, part 1
Binary Studio
 
Academy PRO: Cryptography 3
Binary Studio
 
Academy PRO: Cryptography 1
Binary Studio
 
Academy PRO: Advanced React Ecosystem. MobX
Binary Studio
 
Academy PRO: Docker. Part 4
Binary Studio
 
Academy PRO: Docker. Part 2
Binary Studio
 
Academy PRO: Docker. Part 1
Binary Studio
 
Binary Studio Academy 2017: JS team project - Orderly
Binary Studio
 
Binary Studio Academy 2017: .NET team project - Unicorn
Binary Studio
 
Academy PRO: React native - miscellaneous
Binary Studio
 
Academy PRO: React native - publish
Binary Studio
 
Academy PRO: React native - navigation
Binary Studio
 
Academy PRO: React native - building first scenes
Binary Studio
 
Academy PRO: React Native - introduction
Binary Studio
 
Academy PRO: Push notifications. Denis Beketsky
Binary Studio
 
Academy PRO: Docker. Lecture 4
Binary Studio
 
Academy PRO: Docker. Lecture 3
Binary Studio
 
Academy PRO: Docker. Lecture 2
Binary Studio
 
Academy PRO: Docker. Lecture 1
Binary Studio
 
Ad

Binary Studio Academy 2016. Data structures and LINQ

  • 1. for Binary Studio Academy Beseda Dmitriy skype: dmitriy.b_binary email: [email protected] 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

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