Abfragen von typisierten DataSets
Wenn zum Zeitpunkt der Anwendungskonzeptionierung bereits das DataSet-Schema bekannt ist, wird empfohlen, bei der Benutzung von LINQ to DataSet mit einem typisierten DataSet zu arbeiten. Ein typisiertes DataSet ist eine Klasse, die von einem DataSet abgeleitet ist. Damit erbt sie alle Methoden, Ereignisse und Eigenschaften eines DataSet. Darüber hinaus stellt ein typisiertes DataSet stark typisierte Methoden, Ereignisse und Eigenschaften bereit. Das heißt, dass Sie auf Tabellen und Spalten anhand ihres Namens zugreifen können und keine auflistungsbasierten Methoden verwenden müssen. Dadurch werden Abfragen einfacher und lesbarer. Weitere Informationen dazu finden Sie unter Typisierte 'DataSets' (ADO.NET).
LINQ to DataSet unterstützt auch das Abfragen von Daten in einem typisierten DataSet. Bei Verwendung eines typisierten DataSet brauchen Sie nicht auf die generische Methode Field bzw. SetField zurückgreifen, um auf Spaltendaten zugreifen zu können. Eigenschaftennamen sind zum Zeitpunkt der Kompilierung verfügbar, weil die Typinformationen im DataSet enthalten sind. LINQ to DataSet bietet Zugriff auf Spaltenwerte als korrektem Typ, sodass Typenkonfliktfehler bereits bei der Kompilierung und nicht erst zur Laufzeit erkannt werden.
Bevor Sie mit der Abfrage eines typisierten DataSet beginnen können, müssen Sie die Klasse mithilfe des DataSet-Designers in Visual Studio 2008 generieren. Weitere Informationen dazu finden Sie unter Gewusst wie: Erstellen eines typisierten Datasets.
Beispiel
Im folgenden Beispiel wird eine Abfrage von Daten in einem typisierten DataSet veranschaulicht:
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
Siehe auch
Konzepte
Abfragen von 'DataSets' (LINQ to DataSet)