DataTableExtensions.AsEnumerable(DataTable) 方法

定义

返回一个 IEnumerable<T> 对象,其泛型参数 TDataRow。 此对象可用于 LINQ 表达式或方法查询。

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

可枚举的源 DataTable

返回

EnumerableRowCollection<DataRow>

一个 IEnumerable<T> 对象,其泛型参数 TDataRow

例外

示例

在下面的示例中,该方法 DisplayProducts 接收包含名为 ProductNameDataColumn 的 DataColumn 的 DataTable,提取 ProductName 值,然后打印值。

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) 查询可用于实现 IEnumerable<T> 接口或 IQueryable 接口的数据源。 该 DataTable 类不实现任一接口,因此必须调用 AsEnumerable 该方法以在 DataTable LINQ 查询的子句中 From 用作源。 还可以通过返回对象IEnumerable<T>来获取自定义的特定于域的运算符,例如CopyToDataTable

方法返回 AsEnumerable 的可枚举对象永久绑定到 DataTable 生成它的对象。 对该方法的 AsEnumerable 多个调用将返回多个独立的可查询对象,这些对象全部绑定到源 DataTable

适用于