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 finden Sie unter Typisierte DataSets.
LINQ to DataSet unterstützt auch Abfragen über ein typisiertes DataSet. Mit einem typisierten DataSet müssen Sie für den Zugriff auf Spaltendaten nicht die generische Field-Methode oder SetField-Methode verwenden. Eigenschaftennamen stehen zur Kompilierzeit zur Verfügung, da die Typinformationen in den DataSet enthalten sind. LINQ to DataSet ermöglicht den Zugriff auf Spaltenwerte mit dem richtigen Typ, sodass Typenkonfliktfehler bereits bei der Kompilierung des Codes und nicht erst zur Laufzeit abgefangen werden.
Bevor Sie mit der Abfrage eines typisierten DataSet beginnen können, müssen Sie die Klasse mithilfe des DataSet-Designers in Visual Studio generieren. Weitere Informationen finden Sie unter Erstellen und Konfigurieren von 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