|
Программирование >> Программирование с использованием ajax
□ Применение лямбда-выражений в 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 - компилятор позаботится об этом сам.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |