DataTableExtensions.AsEnumerable(DataTable) Method

Definition

Devuelve un objeto IEnumerable<T>, donde el parámetro T genérico es DataRow.Returns an IEnumerable<T> object, where the generic parameter T is DataRow. Este objeto puede usarse en una expresión LINQLINQ o en una consulta de método.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)

Parameters

source
DataTable

DataTable de origen que se va a volver enumerable.The source DataTable to make enumerable.

Returns

EnumerableRowCollection<DataRow>

Objeto IEnumerable<T>, donde el parámetro T genérico es DataRow.An IEnumerable<T> object, where the generic parameter T is DataRow.

Exceptions

El valor del objeto DataTable de origen es null.The source DataTable is null.

Examples

En el ejemplo siguiente, el método DisplayProducts recibe un DataTable que contiene un objeto DataColumn denominado ProductName, extrae los valores ProductName y, a continuación, imprime los valores.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

Remarks

Language-Integrated Query (LINQ)Language-Integrated Query (LINQ) consultas funcionan en orígenes de datos que implementan la interfaz de IEnumerable<T> o la interfaz de IQueryable.queries work on data sources that implement the IEnumerable<T> interface or the IQueryable interface. La clase DataTable no implementa ninguna de las interfaces, por lo que debe llamar al método AsEnumerable para utilizar la DataTable como un origen en la cláusula From de una consulta de LINQLINQ.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. También puede obtener operadores personalizados específicos del dominio, como CopyToDataTable, devolviendo un objeto IEnumerable<T>.You can also obtain custom, domain-specific operators, such as CopyToDataTable, by returning an IEnumerable<T> object.

El objeto enumerable devuelto por el método AsEnumerable está enlazado de forma permanente al DataTable que lo generó.The enumerable object returned by the AsEnumerable method is permanently bound to the DataTable that produced it. Varias llamadas al método AsEnumerable devolverán varios objetos consultables independientes enlazados a la DataTablede origen.Multiple calls to the AsEnumerable method will return multiple, independent queryable objects that are all bound to the source DataTable.

Applies to