Поделиться через


Запрос к типизированным объектам DataSet

Обновлен: November 2007

Если схема объекта DataSet известна во время разработки приложения, при создании запроса LINQ to DataSet рекомендуется использовать типизированный объект DataSet. Типизированный объект DataSet представляет класс, производный от DataSet. Поэтому он наследует все методы, события и свойства класса DataSet. Кроме того, типизированный объект DataSet предоставляет методы, события и свойства со строгой типизацией. Это означает, что доступ к таблицам и столбцам можно получить по имени, не используя методы на основе коллекций. Это упрощает запросы и повышает их читаемость. Дополнительные сведения см. в разделе Типизированные объекты DataSet (ADO.NET).

LINQ to DataSet также поддерживает запросы к типизированным объектам DataSet. Если объект DataSet типизирован, нет необходимости использовать универсальный метод Field или метод SetField для доступа к данным столбцов. Имена свойств доступны во время компиляции, так как сведения о типе включаются в объект DataSet. Запрос LINQ to DataSet предоставляет доступ к значениям столбцов правильного типа, поэтому ошибки несоответствия типов обнаруживаются во время компиляции, а не во время выполнения.

Прежде чем направлять запросы к типизированному объекту DataSet, необходимо создать класс с помощью конструктора DataSet в среде Visual Studio 2008. Дополнительные сведения см. в разделе Практическое руководство. Создание типизированного набора данных.

Пример

В следующем примере показан запрос к типизированному объекту DataSet:

var query = from o in orders
            where o.OnlineOrderFlag == true
            select new { o.SalesOrderID,
                         o.OrderDate,
                         o.SalesOrderNumber };

foreach(var order in query) 
{
    Console.WriteLine("{0}\t{1:d}\t{2}", 
order.SalesOrderID, 
order.OrderDate, 
order.SalesOrderNumber);
}
Dim orders = ds.Tables("SalesOrderHeader")

Dim query = _
       From o In orders _
       Where o.OnlineOrderFlag = True _
       Select New {SalesOrderID := o.SalesOrderID, _
                   OrderDate := o.OrderDate, _
                   SalesOrderNumber := o.SalesOrderNumber}

For Each Dim onlineOrder In query
 Console.WriteLine("{0}\t{1:d}\t{2}", _
 onlineOrder.SalesOrderID, _
 onlineOrder.OrderDate, _
 onlineOrder.SalesOrderNumber)
Next

См. также

Основные понятия

Запросы к объектам DataSet (LINQ to DataSet)

Перекрестные запросы между таблицами (LINQ to DataSet)

Запросы к одиночным таблицам (LINQ to DataSet)