2010-07-14 5 views
8

Yineleme olmadan bir veri tablosundan ilk 5 satırı seçmenin bir yolu var mı?Veri tablosu en iyi 5 satırı seçin

+1

sana "yineleme olmadan" ile ne demek emin değilim. Bir şekilde veya başka bir şekilde, verileri herhangi bir formda bir koleksiyonda numaralandırmak isterseniz, bu verileri bir noktada yinelemeniz gerekecektir. LINQ's .Take() deyimini kullansanız bile, sonuçta aldığınız kayıtların çoğunu yineleyeceksiniz. – jrista

+0

@jrista, her zaman satır [0], satır [1], ..., satır [4] 'yapabilir ve yinelemeden kaçınabilir :-) –

+0

@darin: en azından indeks değişkeni kullanmazsınız :) –

cevap

-1

Bir LINQ deyimi kullanırsanız, Take() yöntemini kullanabilirsiniz.

Bu post bazı yardımcı olabilir.

DÜZENLEME

sen VS2005 kullandığınız gibi, şöyle datatable içinde SELECT() yöntemi kullanın:

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

ama bir hata alıyorum: '' Top 5 '' ifadesini filtreleyin bir Boole terimi için değerlendirmez. –

14

Bence Sen LINQ kullanabilirsiniz:

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

temel olarak bir yineleme. Bu tam olarak, Querist'in istemediği şey! –

+0

+1 Onu bana döv. ;) – jrista

+0

@Andreas Niedermair, anladığım gibi, Querist kendi kodunu kendi kendine yazmak istemiyor. –

0

kullanma Yukarıdaki mesajların 2, aşağıdaki işler benim için:

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

isterseniz istiyorsanız şimdi normalde düzen, filtre ve ardından istediğiniz kayıtların sadece miktarını almak ve daha sonra 1 veya 100.

Umut birisi yardımcı olmasıdır öyle olmadığını onlar aracılığıyla yineleme .

0

Bu benim için çalıştı budur:

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