型指定されたデータセットのクエリを実行する

アプリケーションの設計時に DataSet のスキーマがわかっている場合は、LINQ to DataSet を使用するときに、型指定された DataSet を用いることをお勧めします。 型指定された DataSet とは、DataSet から派生されたクラスのことです。 したがって、型指定されたデータセットは DataSet のすべてのメソッド、イベント、およびプロパティを継承します。 さらに、型指定された DataSet には、厳密に型指定されたメソッド、イベント、プロパティが用意されています。 つまり、コレクションベースのメソッドを使用せずに名前でテーブルおよび列にアクセスできます。 これによりクエリが簡素化され、読みやすくなります。 詳しくは、「型指定されたデータセット」をご覧ください。

LINQ to DataSet では、型指定された DataSet に対するクエリもサポートされています。 型指定された DataSet では、列データにアクセスするために、ジェネリック メソッドの Field または SetField を使用する必要はありません。 DataSet に型情報が含まれているため、プロパティ名をコンパイル時に利用できます。 LINQ to DataSet では、適切な型として列の値にアクセスできるため、実行時ではなくコードのコンパイル時に型の不一致エラーがキャッチされます。

型指定された DataSet に対してクエリを実行するには、Visual Studio のデータセット デザイナーを使用してあらかじめクラスを生成しておく必要があります。 詳しくは、「データセットを作成および構成する」をご覧ください。

次の例では、型指定された 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

関連項目