2010-07-14 8 views
8

Hola, ¿hay alguna manera de seleccionar las 5 mejores filas de una tabla de datos sin iteración?Tabla de datos seleccionar las 5 filas superiores

+1

No estoy seguro de lo que quiere decir con "sin iteración". De una forma u otra, si desea enumerar datos en una colección de cualquier forma, tendrá que repetir esos datos en algún momento. Incluso si usa la instrucción .Take() de LINQ, eventualmente iterará sobre la cantidad de registros que tome. – jrista

+0

@jrista, siempre puedes hacer 'row [0], row [1], ..., row [4]' y evitar la iteración :-) –

+0

@darin: al menos no utilizas index-variable :) –

Respuesta

-1

Si usa una instrucción LINQ, puede usar el método Take().

Este post también puede ser de alguna ayuda.

EDITAR

Como está utilizando VS2005, utilice el método SELECT() en la tabla de datos de este modo:

DataRow[] rows = datatable.Select('TOP 5'); 
+0

pero aparece un error: expresión de filtro '' Top 5 '' no evalúa a un término booleano. –

14

creo, puede utilizar LINQ:

datatable.AsEnumerable().Take(5); 
+0

eso es básicamente una iteración. esto es exactamente lo que el querist no quería! –

+0

+1 Me derrotaron. ;) – jrista

+0

@Andreas Niedermair, según tengo entendido, querist no quiere escribir su propio código con iteraciones. –

0

Uso 2 de las publicaciones anteriores, el siguiente funciona para mí:

foreach (DataRow _dr in DataSet.Tables[<tblname>].Select("", "Timestamp DESC").AsEnumerable().OfType<DataRow>().Take(5)) 

lo que ahora puede filtrar normalmente si se desea, orden si usted quiere y luego sólo la cantidad de registros que desea y luego iterar a través de ellos si es 1 o 100.

Esperamos que ayuda a alguien .

0

Esto es lo que funcionó para mí:

datatable.Rows.Cast<System.Data.DataRow>().Take(5); 
Cuestiones relacionadas