Агрегатные операции Последнее обновление



Скачать 22,26 Kb.
Дата20.05.2020
Размер22,26 Kb.
ТипЛекции



Агрегатные операции

Последнее обновление: 31.10.2015

К агрегатным операциям относят различные операции над выборкой, например, получение числа элементов, получение минимального, максимального и среднего значения в выборке, а также суммирование значений.



Метод Aggregate

Метод Aggregate выполняет общую агрегацию элементов коллекции в зависимости от указанного выражения. Например:






int[] numbers = { 1, 2, 3, 4, 5};

 

int query = numbers.Aggregate((x,y)=> x - y);



Переменная query будет представлять результат агрегации массива. В качестве условия агрегации используется выражение (x,y)=> x - y, то есть вначале из первого элемента вычитается второй, потом из получившегося значения вычитается третий и так далее. То есть юудет эквивалентно выражению:

1

int query = 1 - 2 - 3 - 4 - 5

В итоге мы получим число -13. Соответственно мы бы могли использовать любые другие операции, например, сложение:

1

int query = numbers.Aggregate((x,y)=> x + y); // аналогично 1 + 2 + 3 + 4 + 5

Получение размера выборки. Метод Count

Для получения числа элементов в выборке используется метод Count():



1

2

3



int[] numbers = { 1, 2, 3, 4, 10, 34, 55, 66, 77, 88 };

int size = (from i in numbers where i % 2 == 0 && i > 10 select i).Count();

Console.WriteLine(size);


Метод Count() в одной из версий также может принимать лямбда-выражение, которое устанавливает условие выборки. Поэтому мы можем в данном случае не использовать выражение Where:

1

2


int size = numbers.Count(i => i % 2 == 0 && i > 10);

Console.WriteLine(size);



Получение суммы

Для получения суммы значений применяется метод Sum:



1

2

3



4

5

6



7

8

9



10

int[] numbers = { 1, 2, 3, 4, 10, 34, 55, 66, 77, 88 };

List users = new List()

{

    new User { Name = "Tom", Age = 23 },



    new User { Name = "Sam", Age = 43 },

    new User { Name = "Bill", Age = 35 }

};

 

int sum1 = numbers.Sum();



decimal sum2 = users.Sum(n => n.Age);

Метод Sum() имеет ряд перегрузок. В частности, если у нас набор сложных объектов, как в примере выше, то мы можем указать свойство, значения которого будут суммироваться: users.Sum(n => n.Age)

Максимальное, минимальное и среднее значения

Для нахождения минимального значения применяется метод Min(), для получения максимального - метод Max(), а для нахождения среднего значения - метод Average(). Их действие похоже на методы Sum и Count:



1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

int[] numbers = { 1, 2, 3, 4, 10, 34, 55, 66, 77, 88 };

List users = new List()

{

    new User { Name = "Tom", Age = 23 },



    new User { Name = "Sam", Age = 43 },

    new User { Name = "Bill", Age = 35 }

};

 

int min1 = numbers.Min();



int min2 = users.Min(n => n.Age); // минимальный возраст

 

int max1 = numbers.Max();



int max2 = users.Max(n => n.Age); // максимальный возраст

 

double avr1 = numbers.Average();



double avr2 = users.Average(n => n.Age); //средний возраст


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©psihdocs.ru 2019
обратиться к администрации

    Главная страница