Así que tengo un DataTable que se ve más o menos como

 Column 0      |  Column 1 
 Something     |  Something Else 
 Another Thing |  Another Something Else

Y quiero poner todo en la columna 0 en una Lista(De Cadena)

Podía hacer

Dim returnValue as List(Of String)    
For Each r As DataRow In dt.Rows
     returnValue.Add(r.Item(0).ToString)
Next

Pero eso es viejo y roto. Quiero hacer

returnValue = (From r In dt.Rows Select DirectCast(r, DataRow).Item(0)).ToList

Pero que me da una lista(de Objeto).

¿Cómo puedo crear una lista(de Cadena)

(el DirectCast está allí porque tengo Option Strict On)

OriginalEl autor weloytty | 2015-06-04

2 Comentarios

  1. 6

    Es en un datarow colección así que tenemos que echar fuera.

    Elenco

    La función en el Select pide el campo que se desea de la escayola objeto.

    returnValue = dt.Rows.Cast(Of DataRow).Select(Function(dr) dr(0).ToString).ToList

    OriginalEl autor OneFineDay

  2. 3

    dt.Rows es desde antes de la época de .NETA que los medicamentos genéricos, así que no lo puedo devolver un IEnumerable(Of DataRow). Sin embargo, hay un método de extensión, DataTable.AsEnumerable, que hace exactamente lo que usted necesita:

    returnValue = (From r In dt.AsEnumerable() Select r.Field(Of String)(0)).ToList()

    Nota que mi ejemplo también utiliza el DataRow.Campo método de extensión, que permite el tipo de acceso seguro a DataRow campos sin necesidad de una conversión explícita (incluso con Option Strict On).

    FYI: Esta solución no funciona .NET 3.5
    ¿Qué te hace pensar así? Yo uso este patrón todo el tiempo en mi .NET 3.5 proyectos. Tal vez se echa en falta una referencia a System.Data.DataSetExtensions?
    He probado el código y no su trabajo. Tengo Sistema.De datos.DataSetExtensions de referencia, pero me da error de compilación 'ToList' is not a member of 'System.Data.EnumerableRowCollection(Of String)' PS: se trata de un sitio web, si que hace la diferencia.Im usando VS expreso de 2013 y el proyecto .NET framework 3.5
    Esto debería funcionar, ya que EnumerableRowCollection(Of T) implementa IEnumerable(Of T), y, por lo tanto, el Enumerable.ToList método de extensión debería mundo. Tal vez se echa en falta una referencia a System.Core o un Imports System.Linq declaración?
    Tengo System.Core ref, pero no tenía Imports System.Linq – que fija el error de compilación. Muy raro! Gracias Heinzi

    OriginalEl autor Heinzi

Dejar respuesta

Please enter your comment!
Please enter your name here