2010-12-13 12 views
19

Solo entendiendo todas estas cosas LINQ y parece que estoy estancado en el primer obstáculo.Seleccione una sola columna del conjunto de datos con LINQ

Tengo una tabla de datos, tales como:

OrderNo  LetterGroup Filepath 
----------- ----------- -------------------------------------------------- 
0   0   Letters/SampleImage.jpg 
0   0   Letters/UKPC7_0.jpg 
0   0   Letters/UKPC8_0.jpg 

Lo que necesito es conseguir que todas las rutas de los archivos de la columna de Filepath en una matriz de cadenas. Pensé que LINQ sería perfecto para esto (¿estoy en lo cierto?), Pero parece que no puede construir la consulta correcta.

¿Alguien puede proporcionar algunas muestras de código que me orientarían en la dirección correcta? He buscado alrededor, pero parece que no estoy llegando a ningún lado.

Respuesta

30

Existen métodos de extensión que hacen que trabajar con conjuntos de datos mucho más fácil:

using System.Data.Linq; 

var filePaths = 
    from row in dataTable.AsEnumerable() 
    select row.Field<string>("Filepath"); 

var filePathsArray = filePaths.ToArray(); 

También puede utilizar la sintaxis método para ponerlo en una declaración:

var filePaths = dataTable 
    .AsEnumerable() 
    .Select(row => row.Field<string>("Filepath")) 
    .ToArray(); 
11
string[] filePaths = (from DataRow row in yourDataTable.Rows 
        select row["Filepath"].ToString()).ToArray(); 
+0

Esto no está utilizando LINQ en absoluto. – poindexter12

+2

@ poindexter12 - ¿Qué? Claro que me parece LINQ. – jfar

+0

@jfar: Esta es técnicamente la sintaxis de LINQ, así que eliminé mi voto negativo. Sin embargo, en el espíritu de la pregunta, creo que había un poco más que podría ser explicado. – poindexter12

2

Si quiere usar LINQ hasta el final, configurar su base de datos y crear un objeto de contexto. Entonces usted debería ser capaz de hacer algo como esto:

var filepaths = from order in _context.Orders 
       select order.Filepath; 

Esto está asumiendo su mesa para la fila se denomina Orders, lo que supongo por su primer nombre de columna de orden. Si usted quiere devolver un conjunto de los números de pedido, así como para usar más tarde para saber dónde está la ruta del archivo de vino de usted podría hacer algo así:

var results = from order in _context.Orders 
       select new 
       { 
        order.OrderNo, 
        order.Filepath 
       } 

Esto le daría un nuevo tipo anónimo que contenía tanto las valores como propiedades.

Cuestiones relacionadas