Программирование >>  Программирование с использованием ajax 

1 ... 263 264 265 [ 266 ] 267 268 269 ... 396


□ Применение лямбда-выражений в LINQ.

□ Упорядочивание результатов запроса, включая многоуровневое упорядочивание, а Когда и как следует использовать агрегатные операции LINQ.

□ Использование проекций для создания новых объектов в запросах.

□ Использование операций Distinct (), Any (), All (), First (), FirstOrDef ault (), TakeO и Skip().

□ Групповые запросы.

□ Операции множеств и соединения.

Хотя эта глава сосредоточена на LINQ to Objects, основные излагаемые здесь концепции применимы ко всем вариациям LINQ и являются основой для последующих глав по LINQ to SQLuUNQtoXML.

LINQ слишком велик, чтобы полностью раскрыть все его средства и методы; это вышло бы за рамки книги для начинающих. Однако вы увидите здесь примеры всех различных типов операций и операторов, которые, вероятно, понадобятся вам как пользователю LINQ, и вы получите здесь ссылки на ресурсы, необходимые для углубленного изучения темы.

Вариации LINQ

Среда Visual С# 2008 поставляется с тремя встроенными вариациями LINQ, которые обеспечивают запросные решения для разных типов данных: LINQ to Objects, LINQ to SQL и LINQ to XML.

a LINQ to Objects. Обеспечивает возможность запросов любых объектов С#, находящихся в памяти, таких как массивы, списки и другие типы коллекций. Во всех примерах настоящей главы используется LINQ to Objects. Тем не менее, вы сможете применять изученные здесь приемы для работы со всеми прочими вариациями LINQ.

а LINQ to SQL. Обеспечивает возможность запросов к реляционным базам данных, использующим стандартный язык запросов баз данных, таким как Microsoft SQL Server, Oracle и т.п. В прошлом доступ С# к этим базам требовал от разработчика изучения как минимум, некоторой части SQL, но теперь возможности запросов встроены в сам язык С# через LINQ, и вы можете позволить LINQ to SQL обработать трансляцию SQL за вас. LINQ to SQL детально рассматривается в главе 27.

а LINQ to XML. Обеспечивает возможность создания и манипулирования документами XML с применением того же синтаксиса, а также механизмы запросов, общие с прочими вариациями. LINQ to XML детально рассматривается в главах 27 и 29.

а Поставщики LINQ. LINQ может быть расширен для других вариаций источников данных помимо объектов, баз данных SQL и XML. Нужно просто написать собственный поставщик LINQ для этого типа источника данных. Дизайн поставщика LINQ - это отдельная тема, выходящая за рамки настоящей книги, но разработчикам С# важно знать, что новые поставщики LINQ могут быть написаны и будут написаны (как самой Microsoft, так и независимыми разработчиками), так что в будущем можно ожидать появление других вариаций LINQ.



Первый запрос LINQ

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

пра1сп1ческое занятие Первая программа LINQ

Для создания примера выполните следующие шаги в Visual С# 2008.

L Создайте новое консольное приложение по имени 2 6-1-FirstLINQquery в каталоге С: \BegVCSharp\Chapter26, затем откройте главный файл Program.cs.

2. Обратите внимание, что Visual С# 2008 по умолчанию включает пространства имен LINQ в Program, cs:

using System;

using System.Collections.Generic; using System.Linq;

using System.Text;

. Добавьте следующий код в метод Main () в Program.cs: static void Main(string[] args) {

string[] names = { Alonso , Zheng , Smith , Jones , Smythe , Small , Ruiz , Hsieh , Jorgenson , Ilyich , Singh , Samba , Fatimah };

var queryResults = from n in names where n.StartsWith ( S ) select n;

Console.WriteLine ( Шена, начинающиеся с S: );

foreach (var item in queryResults) { Console.WriteLine(item);

Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine();

4. Откомпилируйте и запустите программу (можно просто нажать <F5> для запуска отладки). Вы увидите имена в списке, начинающиеся с S, в том порядке, в котором они объявлены в массиве, как показано ниже:

Имена, начинающиеся с S:

Smith

Smythe

Small

Singh

Samba

Программа завершена, нажмите Enter для продолжения:

Просто нажмите <Enter> для завершения программы и закрытия экрана консоли. Если вы использовали <Ctrl+F5> (запуск без отладки), может понадобиться нажать <Enter> два раза. Это завершит выполнение программы.



Описание полученных результатов

Первый шаг - ссылка на пространство имен System.Linq, которая выполняется автоматически Visual С# 2008 при создании проекта:

using System.Linq;

Все базовые системные классы поддержки LINQ находятся в пространстве имен System. Linq. Если вы создаете исходный файл С# вне Visual С# 2008 или редактируете ранее существовавший проект Visual С# 2005, вам может понадобиться добавить эту директиву вручную.

Следующий шаг - создание некоторых данных, что осуществляется в рассматриваемом примере объявлением и инициализацией массива names:

string[] names = { Alonso , Zheng , Smith , Jones , Smythe , Small , Ruiz , Hsieh , Jorgenson , Ilyich , Singh , Samba , Fatimah };

Это тривиальный набор данных, тем не менее, он подходит для начального примера, в котором результат запроса очевиден. Сам оператор запроса LINQ представлен в следующей части программы:

var queryResults = from n in names where n.StartsWith ( S ) select n;

Оператор выглядит довольно странно, не правда ли? Он кажется написанным на языке, отличном от С#, и в самом деле - синтаксис from. . .where. . . select определенно напоминает язык запросов баз данных SQL. Однако это не SQL1 Это действительно С#, как вы убедились, набирая этот код в Visual С# 2008 - слова from, where и select подсвечивались как ключевые, и этот странно выглядящий синтаксис вполне понравился компилятору.

Оператор запроса LINQ в этой программе использует декларативный синтаксис запросов LINQ:

var queryResults = from n in names where n.StartsWith ( S ) select n;

Этот оператор состоит из четырех частей: начинающееся с var объявление переменной result, которой выполняется присваивание с использованием синтаксиса запроса, состоящего из конструкций from, where и select. Давайте рассмотрим каждую из этих частей по очереди.

Объявление переменной результата с использованием ключевого слова var

Запрос LINQ начинается с объявления переменной, которая будет содержать результат запроса, что обычно осуществляется объявлением с ключевым словом var:

var queryResult =

Как было описано в главе 14, var - новое ключевое слово в С# 3.0, предназначенное для объявления обобщенного типа переменных, что идеально для хранения результатов запросов LINQ. Ключевое слово var заставляет компилятор С# вывести тип результата на основе самого запроса. Таким образом, вам не нужно заранее объявлять тип объектов, возвращаемых запросом LINQ - компилятор позаботится об этом сам.



1 ... 263 264 265 [ 266 ] 267 268 269 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика