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
risposta
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');
ma sto ricevendo un errore: espressione del filtro '' Top 5 '' non valuta un termine booleano. –
credo, è possibile utilizzare LINQ:
datatable.AsEnumerable().Take(5);
è praticamente un'iterazione. questo è esattamente ciò che il querist non voleva! –
+1 Picchiami. ;) – jrista
@Andreas Niedermair, come ho capito, querist non vuole scrivere il proprio codice con iterazioni. –
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 .
Questo è ciò che ha funzionato per me:
datatable.Rows.Cast<System.Data.DataRow>().Take(5);
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
@jrista, potresti sempre fare 'row [0], row [1], ..., row [4]' ed evitare l'iterazione :-) –
@darin: almeno non usi la variabile index :) –