Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Предложение "let"

Используйте предложение letдля сохранения результатов выражения, такого как вызов метода, в новую переменную диапазона. В следующем примере в переменную диапазонаsсохраняется первый элемент массива строк, возвращенного с помощьюSplit.

string[] names = { "Svetlana Omelchenko", "Claire O'Donnell", "Sven Mortensen", "Cesar Garcia" };

IEnumerable<string> queryFirstNames =

from name in names

let firstName = name.Split(new char[] { ' ' })[0]

select firstName;

foreach (string s in queryFirstNames)

Console.Write(s + " ");

//Output: Svetlana Claire Sven Cesar

Дополнительные сведения см. в разделе Предложение let (справочник по C#).

Вложенные запросы в выражении запроса

Предложение запроса может само содержать выражение запроса, которое иногда называют вложенным запросом. Каждый вложенный запрос начинается собственным предложением from, которое может указывать на источник данных, отличный от источника данных первого предложения from. Например, в следующем запросе показано выражение запроса, которое используется в операторе "select" для извлечения результатов операции группирования.

var queryGroupMax =

from student in students

group student by student.GradeLevel into studentGroup

select new

{

Level = studentGroup.Key,

HighestScore =

(from student2 in studentGroup

select student2.Scores.Average())

.Max()

};

Дополнительные сведения см. в разделе How to: Perform a Subquery on a Grouping Operation (C# Programming Guide).

LINQ to DataSet

Общие сведения о linq to DataSet

Класс DataSetявляется одним из наиболее распространенных компонентов ADO.NET. Это ключевой элемент модели автономного программирования, построенный на основе ADO.NET. Он позволяет явным образом кэшировать данные из различных источников данных. На уровне представленияDataSetтесно интегрируется с элементами управления с помощью графического интерфейса привязки данных. На среднем уровне он предоставляет кэш, который защищает реляционную форму данных и включает в себя простые службы обеспечения быстрых запросов и навигации по иерархии. Распространенным приемом, используемым для уменьшения числа запросов к базе данных, является использованиеDataSetдля кэширования на среднем уровне. Например, рассмотрим управляемое данными веб-приложение ASP.NET. Обычно значительная часть данных приложения изменяется нечасто и остается неизменной во время сеанса пользователя. Эти данные могут сохраняться в памяти веб-сервера, что сократит число запросов к базе данных и ускорит взаимодействие с пользователями. Другим полезным аспектомDataSetявляется то, что приложения могут переносить подмножества данных из одного или нескольких источников данных в пространство приложения. Затем приложение может работать с данными в памяти как с реляционными данными.

Объект DataSetимеет ограниченные возможности запросов. МетодSelectможно использовать для фильтрации и сортировки, а методыGetChildRowsиGetParentRow— для навигации по иерархии. Для более сложных операций необходимо писать пользовательские запросы.Это может снизить производительность приложений и создать трудности при их сопровождении.

LINQ to DataSet упрощает и ускоряет запросы к данным, кэшированным в объекте DataSet.Эти запросы выражены на языке программирования, а не в виде строковых литералов, внедренных в код приложения. Это означает, что разработчикам не придется изучать отдельный язык запросов.Кроме того, LINQ to DataSet повышает эффективность разработки в среде Visual Studio, поскольку интегрированная среда разработки Visual Studio обеспечивает проверку синтаксиса во время компиляции, статическую типизацию и поддержку технологии IntelliSense для LINQ.Технология LINQ to DataSet также может использоваться для запросов к данным, находящимся в одном или нескольких источниках.Это делает возможными много сценариев, требующих гибкости в представлении и управлении данными. В частности, этот метод обработки требуется для универсальных приложений отчетности, анализа и бизнес-аналитики.

Технология LINQ to DataSet построена на основе архитектуры ADO.NET 2.0 и использует ее, но не заменяет ADO.NET 2.0 в коде приложения. Существующий код ADO.NET 2.0 будет по-прежнему работать в приложении LINQ to DataSet. Связь LINQ to DataSet и ADO.NET 2.0 с хранилищем данных показана на следующей схеме.