Содержание

Слайд 2

Три частини LINQ -запиту

// 1. Джерело даних
int[] numbers = new

Три частини LINQ -запиту // 1. Джерело даних int[] numbers = new
int[7]{0,1,2,3,4,5,6};
// 2. Формування запиту (query)
IEnumerable numQuery =
from num in numbers
where (num % 2) == 0
select num;
// 3. Виконання запиту
foreach (int num in numQuery)
{
Console.Write("{0} ", num);
}

Слайд 3

Три частини LINQ -запиту

Джерело даних – всі послідовності, що реалізують інтерфейс IEnumerable

Три частини LINQ -запиту Джерело даних – всі послідовності, що реалізують інтерфейс
- колекції, в тому числі і масиви. ( System.Collections.Generic)
Формування запиту (query)- комбінація операторів стандартних запитів, які є розширеними методами класу System.Linq.Enumerable (where, select, from,…).
Виконання запиту:
- Відкладені запити . В результаті формування такого запиту утворюється об’єкт IEnumerable. Виконання запиту (отримання послідовності) відбувається при переліченні об’єкта запиту в foreach.
- Невідкладені запити - виконуються при формуванні запиту – надають послідовність елементів .(ToList)

Слайд 4

Відкладене виконання запитів

Відкладене виконання запитів

Слайд 5

Відкладене виконання запиту

Customer[] custs = SampleData.GetCustomers();

var query = from c in

Відкладене виконання запиту Customer[] custs = SampleData.GetCustomers(); var query = from c
custs where c.City == "London" select c.Name;

var query = custs.Where(c => c.City == "London").Select(c => c.Name);

string[] names = query.ToArray();

Слайд 6

int [] intArray = new int [] { 1, 2, 3 };
//

int [] intArray = new int [] { 1, 2, 3 };
Формування відкладеного запиту
IEnumerable ints = intArray.Select(i => i);
// виконання запиту і друк отриманої послідовності
foreach (int i in ints)
Console.WriteLine(i);
// міняємо елемент в джерелі даних.
intArray[0] = 5;
// виконання запиту і друк отриманої послідовності.
foreach (int i in ints)
Console.WriteLine(i);

Приклади виконання запитів

int [] intArray = new int [] { 1, 2, 3 };
// Формування і виконання запиту
IEnumerable ints = intArray.Select(i => i).ToList();
// друк отриманої послідовності
foreach (int i in ints)
Console.WriteLine(i);
// міняємо елемент в джерелі даних.
intArray[0] = 5;
// друк отриманої послідовності.
foreach (int i in ints)
Console.WriteLine(i);

Слайд 7

Standard Query Operators

Standard Query Operators

Слайд 8

Оператори стандартних запитів

Оператори стандартних запитів – це статичні методи класу Enumerable

Оператори стандартних запитів Оператори стандартних запитів – це статичні методи класу Enumerable
, визначені як розширюючі методи того типу, яким вони оперують. 
Більшість методів оперують послідовностями (які реалізують IEnumerable(T) або IQueryable(T) інтерфейси).
Забезпечують можливості запитів щодо фільтрування, проектування, агрегації, сортування і ін.
методи можуть бути викликані, як статичні методи і як методи об’єкта.
Методи Where і Select , що є where і select операторами – розширюючі методи для IEnumerable(T) інтерфейсу.

Слайд 9

Where()

public static IEnumerable Where(this IEnumerable source, Func predicate );
public static IEnumerable

Where() public static IEnumerable Where (this IEnumerable source, Func predicate ); public
Where(this IEnumerable source, Func predicate );

Слайд 10

Делегати Func

T0, T1, T2, T3 - типи вхідних параметрів
TR –

Делегати Func T0, T1, T2, T3 - типи вхідних параметрів TR –
тип, що повертається
один з параметрів може бути int – індекс елемента в послідовності

Оператори стандартних запитів приймають як параметр - делегат Func (останній в списку параметрів).

Слайд 11

Приклад оголошення і використання делегата

int [ ] ints = new int [

Приклад оголошення і використання делегата int [ ] ints = new int
] { 1, 2, 3, 4, 5, 6 };
// оголошеня делегата через лямбда-вираз
Func GreaterThanTwo = i => i > 2;
IEnumerable intsGreaterThanTwo =
ints.Where(GreaterThanTwo);
foreach (int i in intsGreaterThanTwo)
Console.WriteLine(i);

Слайд 12

string [ ] controls = {"test","samostijna robota",
"kontrolna robota","opytuvannia",
"chornyj

string [ ] controls = {"test","samostijna robota", "kontrolna robota","opytuvannia", "chornyj spysok","vidviduvannia", "kolokvium",
spysok","vidviduvannia",
"kolokvium", "zalik“, "ekzamen"};
IEnumerable sequence =
controls.Where((p, i) => (i % 2) == 0);
foreach (string s in sequence)
Console.WriteLine("{0}", s);

Лямбда-вираз і виклик делегата

Слайд 13

Агрегація & Об’єднання

Агрегація & Об’єднання

Слайд 14

Aggregate()

int [ ] numbers = new int [6] { 1, 2,

Aggregate() int [ ] numbers = new int [6] { 1, 2,
3, 4, 5, 6 };
int dob =numbers.Aggregate((d,e)=>d*e);
Console.Write("dob={0} ", dob); //720

public static TSource
Aggregate ( this IEnumerable source,
Func func )

Здійснює обчислення над елементами послідовності.
Застосовує func до кожного елемента послідовності.
У func перший аргумент – результат, другий – елемент послідовності.
Після кожного застосування func перший аргумент замінюється результатом
перший елемент послідовності – початкове значення для результату.

Слайд 15

Конвертування

Конвертування

Слайд 16

OfType

//повертає послідовність елементів лише вказаного типу
public static IEnumerable
OfType (

OfType //повертає послідовність елементів лише вказаного типу public static IEnumerable OfType (
this IEnumerable source)

OfType()

object[] sequence = {1, "Hello", 2.0, 0, -7.9, ’f’};
var rez=sequence.OfType();
foreach (var r in rez)
Console.Write("{0} ", r);

Слайд 18

OfType

//Повертає перший елемент (що задовільняє предикат) або default
public static T

OfType //Повертає перший елемент (що задовільняє предикат) або default public static T
FirstOrDefault(this IEnumerable source);
public static T FirstOrDefault(this IEnumerable source,
Func predicate);

FirstOrDefault(), LastOrDefault()

int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
var query = numbers.FirstOrDefault(n => n > 5);
Console.Write("{0} ", query);
query = numbers.LastOrDefault(n => n > 5);
Console.Write("{0} ", query);

Слайд 19

Рівність& Генерування & Групування

Рівність& Генерування & Групування

Слайд 20

//генерує числову послідовність з count ел. починаючи з start
public static

//генерує числову послідовність з count ел. починаючи з start public static IEnumerable
IEnumerable Range(int start,int count);
//генерує послідовність з count елементів element
public static IEnumerable Repeat(T element, int count);

Range(), Repeat()

IEnumerable ints = Enumerable.Range(1, 10);
foreach (int i in ints)
Console.Write("{0} ", i);
IEnumerable ints = Enumerable.Repeat(2, 10);
foreach (int i in ints)
Console. Write("{0} ", i);

Слайд 21

Сортування & Розбиття

Сортування & Розбиття

Слайд 22


public static IEnumerable TakeWhile(
this IEnumerable source, Func predicate);
public static IEnumerable

public static IEnumerable TakeWhile ( this IEnumerable source, Func predicate); public static
TakeWhile(
this IEnumerable source, Func predicate);

TakeWhile(), SkipWhile()

int[] numbers = { 9, 3, 5, 4, 2, 6, 7, 1, 8 };
var query = numbers.TakeWhile((n, index) => n >= index);
foreach (var i in query)
Console.WriteLine(i);
Console.Write("Press Enter key to see the other elements...");
Console.ReadLine();
var query2 = numbers.SkipWhile((n, index) => n >= index);
foreach (var i in query2)
Console.WriteLine(i);

Слайд 23

Проекція& Обмеження& Множини

Проекція& Обмеження& Множини

Слайд 24

public static IEnumerable Select(
this IEnumerable source, Func selector);
public static IEnumerable

public static IEnumerable Select ( this IEnumerable source, Func selector); public static
Select(
this IEnumerable source, Func selector);

Select()

char[] letters = {'a','o','u','i','e','y' };
var query = letters.Select((l, i) =>
new { index = i, letter = l });
foreach (var i in query)
Console.WriteLine("{0}-{1}",i.index,i.letter);

Имя файла: LINQ-to-Object-.pptx
Количество просмотров: 125
Количество скачиваний: 0