2010-07-14 7 views
8

Ciao c'è un modo per selezionare le prime 5 righe da una tabella di dati senza iterazione?La tabella dati seleziona le prime 5 righe

+1

Non sono sicuro di cosa si intende per "senza l'iterazione". In un modo o nell'altro, se si desidera enumerare i dati in una raccolta di qualsiasi modulo, sarà necessario iterare tali dati ad un certo punto. Anche se usi l'istruzione LINQ di .Take(), alla fine andrai su tutti i record che prendi. – jrista

+0

@jrista, potresti sempre fare 'row [0], row [1], ..., row [4]' ed evitare l'iterazione :-) –

+0

@darin: almeno non usi la variabile index :) –

risposta

-1

Se si utilizza un'istruzione LINQ, è possibile utilizzare il metodo Take().

Questo post può essere di aiuto.

EDIT

Come si sta utilizzando VS2005, utilizzare il metodo SELECT() nel DataTable in questo modo:

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

ma sto ricevendo un errore: espressione del filtro '' Top 5 '' non valuta un termine booleano. –

14

credo, è possibile utilizzare LINQ:

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

è praticamente un'iterazione. questo è esattamente ciò che il querist non voleva! –

+0

+1 Picchiami. ;) – jrista

+0

@Andreas Niedermair, come ho capito, querist non vuole scrivere il proprio codice con iterazioni. –

0

Utilizzando 2 dei post di cui sopra, il seguente funziona per me:

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

così ora si può normalmente filtrare se si vuole, ordine se si desidera e quindi ottenere solo la quantità di record che si desidera e poi scorrere attraverso di loro se si tratta di 1 o 100.

Speranza che aiuta qualcuno .

0

Questo è ciò che ha funzionato per me:

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