DataTableExtensions.AsEnumerable(DataTable) メソッド

定義

IEnumerable<T> オブジェクトを返します。ここで、ジェネリック パラメーター TDataRow です。Returns an IEnumerable<T> object, where the generic parameter T is DataRow. このオブジェクトは、LINQLINQ 式またはメソッド クエリで使用できます。This object can be used in a LINQLINQ expression or method query.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Data::EnumerableRowCollection<System::Data::DataRow ^> ^ AsEnumerable(System::Data::DataTable ^ source);
public static System.Data.EnumerableRowCollection<System.Data.DataRow> AsEnumerable (this System.Data.DataTable source);
static member AsEnumerable : System.Data.DataTable -> System.Data.EnumerableRowCollection<System.Data.DataRow>
<Extension()>
Public Function AsEnumerable (source As DataTable) As EnumerableRowCollection(Of DataRow)

パラメーター

source
DataTable

列挙可能にする対象のソース DataTableThe source DataTable to make enumerable.

戻り値

IEnumerable<T> オブジェクト。ここで、ジェネリック パラメーター TDataRow です。An IEnumerable<T> object, where the generic parameter T is DataRow.

例外

ソース DataTablenull です。The source DataTable is null.

次の例では、DisplayProducts メソッドは、ProductName という名前の DataColumn を含む DataTable を受け取り、ProductName の値を抽出して、値を出力します。In the following sample, the DisplayProducts method receives a DataTable that contains a DataColumn named ProductName, extracts the ProductName values and then prints the values.

using System;
using System.Data;

class Program {
   public void DisplayProducts(DataTable table) {
      var productNames = from products in table.AsEnumerable() select products.Field<string>("ProductName");
      Console.WriteLine("Product Names: ");
      foreach (string productName in productNames) {
         Console.WriteLine(productName);
      }
   }

   static void Main(string[] args) {
      DataTable table = new DataTable();
      table.Columns.Add("ID");
      table.Columns.Add("ProductName");

      table.Rows.Add("1", "Chai");
      table.Rows.Add("2", "Queso Cabrales");
      table.Rows.Add("3", "Tofu");

      Program inst = new Program();
      inst.DisplayProducts(table);
   }
}
Imports System.Console

Module Module1
   Public Sub DisplayProducts(ByVal table As DataTable)
      Dim productNames = From products In table.AsEnumerable() Select products("ProductName")
      WriteLine("Product Names: ")
      For Each productName In productNames
         WriteLine(productName)
       Next
   End Sub

   Sub Main()
      Dim table As DataTable = New DataTable()
      table.Columns.Add("ID")
      table.Columns.Add("ProductName")

      table.Rows.Add("1", "Chai")
      table.Rows.Add("2", "Queso Cabrales")
      table.Rows.Add("3", "Tofu")

      DisplayProducts(table)
   End Sub
End Module

注釈

統合言語クエリ (LINQ: Language-Integrated Query)Language-Integrated Query (LINQ) クエリは、IEnumerable<T> インターフェイスまたは IQueryable インターフェイスを実装するデータソースに対して機能します。queries work on data sources that implement the IEnumerable<T> interface or the IQueryable interface. @No__t 0 クラスはどちらのインターフェイスも実装していないため、LINQLINQ クエリの From 句のソースとして DataTable を使用するには、AsEnumerable メソッドを呼び出す必要があります。The DataTable class does not implement either interface, so you must call the AsEnumerable method to use the DataTable as a source in the From clause of a LINQLINQ query. また、IEnumerable<T> のオブジェクトを返すことによって、CopyToDataTable などの、ドメイン固有のカスタム演算子を取得することもできます。You can also obtain custom, domain-specific operators, such as CopyToDataTable, by returning an IEnumerable<T> object.

@No__t-0 メソッドによって返される列挙可能なオブジェクトは、それを生成した DataTable に永続的にバインドされます。The enumerable object returned by the AsEnumerable method is permanently bound to the DataTable that produced it. @No__t-0 メソッドを複数回呼び出すと、ソース DataTable にバインドされている複数の独立したクエリ可能オブジェクトが返されます。Multiple calls to the AsEnumerable method will return multiple, independent queryable objects that are all bound to the source DataTable.

適用対象