Compartir vía


DataTableExtensions.AsEnumerable(DataTable) Método

Definición

Devuelve un objeto IEnumerable<T>, donde el parámetro T genérico es DataRow. Este objeto se puede usar en una consulta de método o expresión 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)

Parámetros

source
DataTable

DataTable de origen que se va a volver enumerable.

Devoluciones

Objeto IEnumerable<T>, donde el parámetro T genérico es DataRow.

Excepciones

El valor del objeto DataTable de origen es null.

Ejemplos

En el ejemplo siguiente, el DisplayProducts método recibe una DataTable que contiene un objeto DataColumn denominado ProductName, extrae los ProductName valores y, a continuación, imprime los valores.

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

Comentarios

Las consultas de Language Integrated Query (LINQ) funcionan en orígenes de datos que implementan la interfaz IEnumerable<T> o IQueryable. La DataTable clase no implementa ninguna interfaz, por lo que debe llamar al AsEnumerable método para usar como DataTable origen en la From cláusula de una consulta LINQ. También puede obtener operadores personalizados específicos del dominio, como CopyToDataTable, devolviendo un IEnumerable<T> objeto .

El objeto enumerable devuelto por el AsEnumerable método se enlaza permanentemente al DataTable objeto que lo generó. Varias llamadas al AsEnumerable método devolverán varios objetos consultables independientes que están enlazados al origen DataTable.

Se aplica a