Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 99 стр.

UptoLike

98
// формирование источника данных для запроса
int[] array = new int[] { 4, 5, 2, 0, 3, 9, 1, 7, 8, 6 };
// формирование запроса получения всех четных элементов массива
var query = from el in array where (el % 2) == 0 select el;
// выполнение запроса и печать элементов из выборки
foreach (int a in query)
Console.Write("{0} ", a);
В части from данного запроса указывается, что просматриваются все
элементы el из массива array. В части where задано условие отбора
элементов (для которых el%2==0). Часть select указывает, что в выборку
входят сами элементы el. Собственно выполнение запроса осуществляется
при выполнении следующего за запросом цикла.
Можно выполнять запрос и без цикла foreach. Например, это можно
сделать с помощью агрегирующих функций Count(), Average(), Max()
и др. Так, при получении максимального четного числа из массива
выполнение запроса могло бы быть таким:
// формирование источника данных для запроса
int[] array = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// формирование запроса получения всех четных элементов массива
var query = from el in array where (el % 2) == 0 select el;
// выполнение запроса и печать максимального
// из элементов в выборке
Console.WriteLine("Максимальный четный элемент - {0}", query.Max());
Другим способом выполнения запроса без цикла является кэширование
результата запроса в массиве или списке, который можно обработать
позднее. Это делается с помощью методов запроса ToArray() или
ToList(). Например,
int[] res = query.ToArray();
Подробнее про язык запросов можно прочитать, например, в [9]. Мы
же рассмотрим пример приложения, в котором используются коллекции и
требуется выбор данных из этих коллекций. Для осуществления этого выбора
будем использовать язык запросов.
Требуется написать приложение, которое отслеживает работу магазина.
Имеется каталог товаров, которые могут продаваться в магазине. Каждый
  // формирование источника данных для запроса
  int[] array = new int[] { 4, 5, 2, 0, 3, 9, 1, 7, 8, 6 };

  // формирование запроса получения всех четных элементов массива
  var query = from el in array where (el % 2) == 0 select el;

  // выполнение запроса и печать элементов из выборки
  foreach (int a in query)
     Console.Write("{0} ", a);

     В части from данного запроса указывается, что просматриваются все
элементы el из массива array. В части where задано условие отбора
элементов (для которых el%2==0). Часть select указывает, что в выборку
входят сами элементы el. Собственно выполнение запроса осуществляется
при выполнении следующего за запросом цикла.
     Можно выполнять запрос и без цикла foreach. Например, это можно
сделать с помощью агрегирующих функций Count(), Average(), Max()
и др. Так, при получении максимального четного числа из массива
выполнение запроса могло бы быть таким:

  // формирование источника данных для запроса
  int[] array = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

  // формирование запроса получения всех четных элементов массива
  var query = from el in array where (el % 2) == 0 select el;

  // выполнение запроса и печать максимального
  // из элементов в выборке
  Console.WriteLine("Максимальный четный элемент - {0}", query.Max());

      Другим способом выполнения запроса без цикла является кэширование
результата запроса в массиве или списке, который можно обработать
позднее. Это делается с помощью методов запроса ToArray() или
ToList(). Например,

  int[] res = query.ToArray();

     Подробнее про язык запросов можно прочитать, например, в [9]. Мы
же рассмотрим пример приложения, в котором используются коллекции и
требуется выбор данных из этих коллекций. Для осуществления этого выбора
будем использовать язык запросов.
     Требуется написать приложение, которое отслеживает работу магазина.
Имеется каталог товаров, которые могут продаваться в магазине. Каждый

                                                                      98