Esecuzione di query su DataSet tipizzati

Se lo schema dell’oggetto DataSet è noto in fase di progettazione dell'applicazione, è consigliabile usare un oggetto DataSet tipizzato quando si usa LINQ to DataSet. Un oggetto DataSet tipizzato è una classe che deriva da DataSet. In quanto tale, tale oggetto eredita tutti i metodi, gli eventi e le proprietà di un DataSet. Inoltre, un oggetto tipizzato DataSet fornisce metodi, eventi e proprietà fortemente tipizzati. È quindi possibile accedere a tabelle e colonne in base al nome, anziché usare metodi basati su raccolta. Le query risultano quindi più semplici e più leggibili. Per altre informazioni, vedere DataSet tipizzati.

LINQ to DataSet supporta anche l'esecuzione di query su un oggetto tipizzato DataSet. Con un oggetto DataSet tipizzato non è necessario usare il metodo Field generico o il metodo SetField per accedere ai dati della colonna. I nomi delle proprietà sono disponibili in fase di compilazione perché le informazioni sul tipo sono incluse in DataSet. LINQ to DataSet fornisce l'accesso ai valori di colonna come tipo corretto, in modo che vengano rilevati errori di mancata corrispondenza del tipo quando il codice viene compilato anziché in fase di esecuzione.

Prima di iniziare a eseguire query su un oggetto tipizzato DataSet, è necessario generare la classe usando la Finestra di progettazione dei DataSet in Visual Studio. Per altre informazioni, vedere Creare e configurare DataSet.

Esempio

Nell'esempio seguente viene illustrata una query su un oggetto DataSet tipizzato.

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

Vedi anche