![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Дополнительные методы расширения, связанные с запросами
Помимо методов, соответствующих операторам запроса, поддерживаемым в С#, име ется ряд других методов расширения, связанных с запросами и зачастую оказывающих помощь в формировании запросов. Эти методы предоставляются в среде.NET Framework и определены для интерфейса IEnumerable в классе Enumerable. Ниже приведе ны наиболее часто используемые методы расширения, связанные с запросами. Многие из них могут перегружаться, поэтому они представлены лишь в самой общей форме.
Метод Count() уже демонстрировался ранее в этой главе. А в следующей програм ме демонстрируются остальные методы расширения, связанные с запросами. // Использовать ряд методов расширения, определенных в классе Enumerable. using System; using System.Linq;
class ExtMethods { static void Main() { int[] nums ={ 3, 1, 2, 5, 4 };
Console.WriteLine(" Минимальное значение равно " + nums.Min()); Console.WriteLine(" Максимальное значение равно " + nums.Max());
Console.WriteLine(" Первое значение равно " + nums.First()); Console.WriteLine(" Последнее значение равно " + nums.Last());
Console.WriteLine(" Суммарное значение равно " + nums.Sum()); Console.WriteLine(" Среднее значение равно " + nums.Average());
if(nums.All(n => n > 0)) Console.WriteLine(" Все значения больше нуля.");
if(nums.Any(n => (n % 2) == 0)) Console.WriteLine(" По крайней мере одно значение является четным.");
if(nums.Contains(3)) Console.WriteLine(" Массив содержит значение 3."); } } Вот к какому результату приводит выполнение этой программы. Минимальное значение равно 1 Максимальное значение равно 5 Первое значение равно 3 Последнее значение равно 4 Суммарное значение равно 15 Среднее значение равно 3 Все значения больше нуля. По крайней мере одно значение является четным Массив содержит значение 3. Методы расширения, связанные с запросами, можно также использовать в самом запросе, основываясь на синтаксисе запросов, предусмотренном в С#. И в действитель ности это делается очень часто. Например, метод Average() используется в приве денной ниже программе для получения последовательности, состоящей только из тех значений, которые оказываются меньше среднего всех значений в массиве. // Использовать метод Average() вместе с синтаксисом запросов. using System; using System.Linq;
class ExtMethods2 { static void Main() { int[] nums = { 1, 2, 4, 8, 6, 9, 10, 3, 6, 7 };
var ltAvg = from n in nums let x = nums.Average() where n < x select n;
Console.WriteLine(" Среднее значение равно " + nums.Average());
Console.Write(" Значения меньше среднего: ");
// Выполнить запрос и вывести его результаты. foreach(int i in ltAvg) Console.Write(i + " ");
Console.WriteLine(); } } При выполнении этой программы получается следующий результат. Среднее значение равно 5.6 Значения меньше среднего: 1 2 4 3 Обратите особое внимание в этой программе на следующий код запроса. var ltAvg = from n in nums let x = nums.Average() where n < x select n; Как видите, переменной x в операторе let присваивается среднее всех значений в массиве nums. Это значение получается в результате вызова метода Average() для массива nums.
|