Типизированные наборы данных запроса

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

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

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

Пример

В следующем примере показан запрос к типизированному объекту 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

См. также