Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
}Операции агрегирования LINQ
Запросы LINQ могут также проектироваться для выполнения над результирующим набором разнообразных операций агрегирования. Одним из примеров может служить расширяющий метод
Count()Average()Мах()Min()Sum()EnumerableHere is a simple example:static void AggregateOps() { double[] winterTemps = { 2.0, -21.3, 8, -4, 0, 8.2 }; // Разнообразные примеры агрегации. // Выводит максимальную температуру: Console.WriteLine("Max temp: {0}", (from t in winterTemps select t).Max()); // Выводит минимальную температуру: Console.WriteLine("Min temp: {0}", (from t in winterTemps select t).Min()); // Выводит среднюю температуру: Console.WriteLine("Average temp: {0}", (from t in winterTemps select t).Average()); // Выводит сумму всех температур: Console.WriteLine("Sum of all temps: {0}", (from t in winterTemps select t).Sum()); } Приведенные примеры должны предоставить достаточный объем сведений, чтобы вы освоились с процессом построения выражений запросов LINQ. Хотя существуют дополнительные операции, которые пока еще не рассматривались, вы увидите примеры позже в книге, когда речь пойдет о связанных технологиях LINQ. В завершение вводного экскурса в LINQ оставшиеся материалы главы посвящены подробностям отношений между операциями запросов LINQ и лежащей в основе объектной моделью.
Внутреннее представление операторов запросов LINQ
К настоящему моменту вы уже знакомы с процессом построения выражений запросов с применением разнообразных операций запросов C# (таких как
frominwhereorderbyselectEnumerableEnumerableОгромное количество методов класса
EnumerableFunс<>Where()Enumerablewhere<b>// Перегруженные версии метода Enumerable.Where<T>().</b><b>// Обратите внимание, что второй параметр имеет тип System.Func<>.</b>public static IEnumerable<TSource> Where<TSource>( this IEnumerable<TSource> source, System.Func<TSource,int,bool> predicate)public static IEnumerable<TSource> Where<TSource>( this IEnumerable<TSource> source, System.Func<TSource,bool> predicate)Делегат
Func<>Func<><b>// Различные формы делегата Func<>.</b>public delegate TResult Func<T1,T2,T3,T4,TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4)public delegate TResult Func<T1,T2,T3,TResult>(T1 arg1, T2 arg2, T3 arg3)public delegate TResult Func<T1,T2,TResult>(T1 arg1, T2 arg2)public delegate TResult Func<T1,TResult>(T1 arg1)public delegate TResult Func<TResult>()Учитывая, что многие члены класса
System.Linq.EnumerableХотя использование операций запросов LINQ является, несомненно, самым простым способом построения запросов LINQ, давайте взглянем на все возможные подходы, чтобы увидеть связь между операциями запросов C# и лежащим в основе типом
EnumerableПостроение выражений запросов с применением операций запросов
Для начала создадим новый проект консольного приложения по имени
LinqUsingEnumerableProgramПервый метод,
QueryStringsWithOperators()LinqOverArrayПохожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.