Герберт Шилдт - C# 4.0 полное руководство - 2011

Тут можно читать онлайн Герберт Шилдт - C# 4.0 полное руководство - 2011 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Герберт Шилдт - C# 4.0 полное руководство - 2011 краткое содержание

C# 4.0 полное руководство - 2011 - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

C# 4.0 полное руководство - 2011 - читать онлайн бесплатно полную версию (весь текст целиком)

C# 4.0 полное руководство - 2011 - читать книгу онлайн бесплатно, автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

где выражение j => j обозначает, что упорядочение зависит от входного параметра, который является элементом данных из последовательности, получаемой из метода Where().

В приведенном ниже примере демонстрируется применение метода запроса GroupBy () . Это измененный вариант представленного ранее примера.

// Продемонстрировать применение метода запроса GroupBy().

// Это переработанный вариант примера, представленного ранее // для демонстрации синтаксиса запросов.

using System; using System.Linq;

class GroupByDemo { static void Main() {

string[] websites = {

"hsNameA.com", "hsNameB.net", "hsNameC.net",

’"hsNameD.com", "hsNameE.org", "hsNameF.org",

"hsNameG.tv", "hsNameH.net", "hsNamel.tv"

};

// Использовать методы запроса для группирования

// веб-сайтов по имени домена самого верхнего уровня.

var webAddrs = websites.Where(w => w.LastlndexOf) != 1).

GroupBy(x => x.Substring(x.LastlndexOf(".", x.Length)));

// Выполнить запрос и вывести его результаты, foreach(var sites in webAddrs) {

Console.WriteLine("Веб-сайты, сгруппированные " +

"по имени домена " + sites.Key); foreach(var site in sites)

Console.WriteLine (" " + site);

Console.WriteLine();

}

}

}

Эта версия программы дает такой же результат, как и предыдущая. Единственное отличие между ними заключается в том, как формируется запрос. В данной версии для этой цели используются методы запроса.

Рассмотрим другой пример. Но сначала приведем еще раз запрос из представленного ранее примера применения оператора join.

var inStockList = from item in items

join entry in statusList

on item.ItemNumber equals entry.ItemNumber select new Temp(item.Name, entry.InStock);

По этому запросу формируется последовательность, состоящая из объектов, инкапсулирующих наименование товара и состояние его запасов на складе. Вся эта информация получается путем объединения двух источников данных: items и statusList. Ниже приведен переделанный вариант данного запроса, в котором вместо синтаксиса, предусмотренного в C# для запросов, используется метод запроса Join ().

// Использовать метод запроса Join() для составления списка // наименований товаров и состояния их запасов на складе, var inStockList = items.Join(statusList, kl => kl.ItemNumber, k2 => k2.ItemNumber,

(kl, k2) => new Temp(kl.Name, k2.InStock) );

В данном варианте именованный класс Temp используется для хранения результирующего объекта, но вместо него можно воспользоваться анонимным типом. Такой вариант запроса приведен ниже.

var inStockList = items.Join(statusList, kl => kl.ItemNumber,

к2 => к2.ItemNumber,

(kl, к2) => new { kl.Name, k2.InStock} );

Синтаксис запросов и методы запроса

Как пояснялось в предыдущем разделе, запросы в C# можно формировать двумя способами, используя синтаксис запросов или методы запроса. Любопытно, что оба способа связаны друг с другом более тесно, чем кажется, глядя на исходный код программы. Дело в том, что синтаксис запросов компилируется в вызовы методов запроса. Поэтому код

where х < 10

будет преобразован компилятором в следующий вызов.

Where(х => х < 10)

Таким образом, оба способа формирования запросов в конечном итоге сходятся на одном и том же.

Но если оба способа оказываются в конечном счете равноценными, то какой из них лучше для программирования на С#? В целом, рекомендуется чаще пользоваться синтаксисом запросов, поскольку он полностью интегрирован в язык С#, поддерживается соответствующими ключевыми словами и синтаксическим конструкциями.

Дополнительные методы расширения, связанные с запросами

Помимо методов, соответствующих операторам запроса, поддерживаемым в С#, име-ется ряд других методов расширения, связанных с запросами и зачастую оказывающих помощь в формировании запросов. Эти методы предоставляются в среде .NET Framework и определены для интерфейса IEnumerable в классе Enumerable. Ниже приведены наиболее часто используемые методы расширения, связанные с запросами. Многие из них могут перегружаться, поэтому они представлены лишь в самой общей форме.

Метод

Описание

All( predicate)

Возвращает логическое значение true,если все элементы в последовательности удовлетворяют условию, задаваемому параметром

.predicate

Any( predicate)

Возвращает логическое значение true,если любой элемент в последовательности удовлетворяет условию, задаваемому параметром

predicate

Average()

Возвращает среднее всех значений в числовой последовательности

Contains (value)

Возвращает логическое значение true,если в последовательности содержится указанный объект

Count()

Возвращает длину последовательности, т.е. количество составляющих ее элементов

First()

Возвращает первый элемент в последовательности

Last()

Возвращает последний элемент в последовательности

Max ()

Возвращает максимальное значение в последовательности

Min ()

Возвращает минимальное значение в последовательности

Sum ()

Возвращает сумму значений в числовой последовательности

Метод Count () уже демонстрировался ранее в этой главе. А в следующей программе демонстрируются остальные методы расширения, связанные с запросами.

// Использовать ряд методов расширения, определенных в классе Enumerable.

using System; using System.Linq;

class ExtMethods { static void Main() {

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

Console .WriteLine ("Минимальное значение равно " + nums.MinO);

Console.WriteLine("Максимальное значение равно " + nums.Max());

Console.WriteLine("Первое значение равно " + nums.First());

Console.WriteLine("Последнее значение равно " + nums.Last());

Console.WriteLine("Суммарное значение равно " + nums.SumO);

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.");

}

}

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0 полное руководство - 2011 отзывы


Отзывы читателей о книге C# 4.0 полное руководство - 2011, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x