Zestawy danych typu kwerendy

Jeśli schemat DataSet obiektu jest znany w czasie projektowania aplikacji, zalecamy użycie typu DataSet podczas korzystania z linQ to DataSet. Typd DataSet to klasa, która pochodzi z klasy DataSet. W związku z tym dziedziczy wszystkie metody, zdarzenia i właściwości obiektu DataSet. Ponadto typd zapewnia DataSet silnie typizowane metody, zdarzenia i właściwości. Oznacza to, że można uzyskiwać dostęp do tabel i kolumn według nazwy, zamiast używać metod opartych na kolekcji. Dzięki temu zapytania są prostsze i bardziej czytelne. Aby uzyskać więcej informacji, zobacz Typed DataSets (Typizowane zestawy danych).

LinQ to DataSet obsługuje również wykonywanie zapytań względem typu DataSet. W przypadku typu DataSetnie trzeba używać metody ogólnej Field ani SetField metody w celu uzyskania dostępu do danych kolumny. Nazwy właściwości są dostępne w czasie kompilacji, ponieważ informacje o typie są zawarte w pliku DataSet. LinQ to DataSet zapewnia dostęp do wartości kolumn jako poprawnego typu, dzięki czemu błędy niezgodności typów są przechwytywane podczas kompilowania kodu zamiast w czasie wykonywania.

Przed rozpoczęciem wykonywania zapytań względem wpisanego DataSetelementu należy wygenerować klasę przy użyciu zestawu danych Projektant w programie Visual Studio. Aby uzyskać więcej informacji, zobacz Tworzenie i konfigurowanie zestawów danych.

Przykład

W poniższym przykładzie pokazano DataSetzapytanie dotyczące wpisanego elementu :

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

Zobacz też