Frågetypade datauppsättningar
Om schemat för DataSet programmets design är känt rekommenderar vi att du använder ett skrivet DataSet när du använder LINQ till DataSet. En typ är DataSet en klass som härleds från en DataSet. Därför ärver den alla metoder, händelser och egenskaper för en DataSet. Dessutom innehåller en typ av DataSet metoder, händelser och egenskaper starkt skrivna. Det innebär att du kan komma åt tabeller och kolumner med namn i stället för att använda samlingsbaserade metoder. Detta gör frågor enklare och mer läsbara. Mer information finns i Typade datauppsättningar.
LINQ till DataSet har också stöd för frågor över en typad DataSet. Med ett skrivet DataSetbehöver du inte använda den generiska Field metoden eller SetField metoden för att komma åt kolumndata. Egenskapsnamn är tillgängliga vid kompileringstillfället eftersom typinformationen DataSetingår i . LINQ till DataSet ger åtkomst till kolumnvärden som rätt typ, så att typmatchningsfel fångas när koden kompileras i stället för vid körning.
Innan du kan börja köra frågor mot en typ måste DataSetdu generera klassen med hjälp av DataSet Designer i Visual Studio. Mer information finns i Skapa och konfigurera datauppsättningar.
Exempel
I följande exempel visas en fråga över ett skrivet 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