Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_redaktsia_2013.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
931.98 Кб
Скачать
  1. Введение в запросы linq.

Запрос представляет собой выражение, извлекающее данные из источника данных.

Запросы обычно выражаются на специальном языке запросов. Со временем были разработаны различные языки для различных типов источников данных, например SQL для реляционных баз данных и XQuery для XML.Таким образом, разработчики вынуждены изучать новый язык запросов для каждого типа источника данных или формата данных, который они должны поддерживать.

LINQ упрощает ситуацию, предлагая единообразную модель для работы с данными в различных видах источников и форматов данных. В запросе LINQ работа всегда осуществляется с объектами. Для запросов и преобразований данных в XML-документах, базах данных SQL, наборах данных ADO.NET, коллекциях .NET и любых других форматах, для которых доступен поставщик LINQ, используются одинаковые базовые шаблоны кодирования.

Три части операции запроса

Все операции запроса LINQ состоят из трех различных действий.

1. Получение источника данных.

2. Создание запроса.

3. Выполнение запроса.

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

C#

class IntroToLINQ

{ static void Main()

{ // The Three Parts of a LINQ Query:

// 1. Data source.

int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

// 2. Query creation.

// numQuery is an IEnumerable&ltint>

var numQuery =

from num in numbers

where (num % 2) == 0

select num;

// 3. Query execution.

foreach (int num in numQuery)

{ Console.Write("{0,1} ", num);

} }}

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

  1. LINQ to DataSet.

LINQ to DataSet позволяет разработчикам создавать сложные и мощные запросы для DataSet с помощью LINQ. Запрос LINQ to DataSet возвращает перечисление объектов DataRow, использование которого в сценарии привязки, является, тем не менее, непростой задачей.

Объект DataView может быть создан из запроса LINQ to DataSet, воспринимая характеристики сортировки и фильтрации этого запроса. LINQ to DataSet расширяет функциональные возможности DataView, обеспечивая фильтрацию и сортировку на основе выражения LINQ, позволяющего выполнять гораздо более сложные и мощные операции сортировки и фильтрации по сравнению с сортировкой и фильтрацией на основе строки. Дополнительные сведения см. в разделе Связывание с данными и LINQ to DataSet.

Объект DataView в контексте LINQ to DataSet можно создать двумя способами. Можно создать объект DataView на основе запроса LINQ to DataSet к таблице DataTable или на основе типизированной или нетипизированной таблицы DataTable. В обоих случаях объект DataView создается с помощью одного из методов расширений AsDataView; объект DataView нельзя напрямую создать в контексте LINQ to DataSet.

После создания объекта DataView его можно привязать к элементу управления в пользовательском интерфейсе приложения Windows Forms или ASP.NET либо изменить параметры фильтрации и сортировки.

Объект DataView создает индекс, значительно повышающий производительность операций, использующих этот индекс, таких как фильтрация и сортировка. Индекс для DataView формируется как при создании DataView, так и при изменении каких-либо сведений о сортировке или фильтрации.

Создание DataView и последующее задание сведений о сортировке или фильтрации приводит как минимум к двукратному построению индекса - при создании DataView и при изменении каких-либо свойств сортировки или фильтрации.

Возможность фильтрации данных на основе заданных критериев и их предоставление клиенту с помощью элемента управления в пользовательском интерфейсе - это важный аспект привязки данных. Объект DataView реализует несколько способов фильтрации и возвращения подмножеств строк данных, отвечающих определенным критериям фильтрации. Кроме возможностей фильтрации на основе строк, объект DataView также позволяет использовать в критериях фильтрации выражения LINQ. Выражения LINQ позволяют выполнять гораздо более сложные и мощные операции фильтрации, чем фильтрация на основе строк.

Существует два способа фильтрации данных с помощью объекта DataView.

Создайте объект DataView на основе запроса LINQ to DataSet с предложением WHERE.

Используйте существующие возможности фильтрации на основе строк, предоставляемые объектом DataView.

Создание объекта DataView на основе запроса с данными фильтрации

Объект DataView можно создать с помощью запроса LINQ to DataSet. Если запрос содержит предложение Where, объект DataView будет создан с учетом данных фильтрации из этого запроса. Выражение в предложении Where используется для определения того, какие строки данных будут включены в объект DataView, и является основой для фильтра.

Фильтрация на основе выражений является более сложной и мощной, чем более простая фильтрация на основе строк. Фильтры на основе строк и выражений взаимно исключают друг друга. Если фильтрация на основе строк RowFilter задается после создания объекта DataView на основе запроса, выводимый из запроса фильтр на основе выражений очищается.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]