2010-07-14 28 views
8

嗨有没有办法从数据表中选择前5行而不进行迭代?数据表选择前5行

+1

我不知道你的意思是“不重复”。无论如何,如果您想枚举任何形式的集合中的数据,您必须在某个时间点迭代该数据。即使你使用LINQ的.Take()语句,你最终还是会遍历你记录的很多记录。 – jrista 2010-07-14 05:36:19

+0

@jrista,你总是可以做'行[0],行[1],...,行[4]',并避免迭代:-) – 2010-07-14 05:40:22

+0

@darin:至少你不使用索引变量:) – 2010-07-14 05:43:40

回答

-1

如果您使用LINQ语句,则可以使用Take()方法。

这个post也可能有一些帮助。

编辑

当你正在使用VS2005,使用SELECT()方法在数据表像这样:

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

但我得到一个错误:过滤表达''前5''不计算为布尔型术语。 – 2010-07-24 06:23:18

14

我认为,你可以使用LINQ:

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

这基本上是一个迭代。这正是查询者不想要的! – 2010-07-14 05:36:05

+0

+1击败我。 ;) – jrista 2010-07-14 05:36:46

+0

@Andreas Niedermair,据我所知,querist不想用迭代编写自己的代码。 – 2010-07-14 05:39:44

0

使用以上帖子中的2篇,以下作品适合我:

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

所以,现在,如果你愿意,你可以正常筛选如果你想,订单,然后得到的只是要记录的金额,然后遍历它们无论是1或100

希望帮助别人。

0

这是对我工作:

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