C# 数据表选择前5行

C# 数据表选择前5行,c#,datatable,C#,Datatable,嗨,有没有办法不经过迭代就从数据表中选择前5行?如果使用LINQ语句,可以使用Take()方法 这可能也会有所帮助 编辑 在使用VS2005时,请使用datatable中的SELECT()方法,如下所示: DataRow[] rows = datatable.Select('TOP 5'); 我认为,您可以使用LINQ: datatable.AsEnumerable().Take(5); 使用上述两个职位,以下工作对我来说: foreach (DataRow _dr in DataSet.T

嗨,有没有办法不经过迭代就从数据表中选择前5行?

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

这可能也会有所帮助

编辑

在使用VS2005时,请使用datatable中的
SELECT()
方法,如下所示:

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

我认为,您可以使用LINQ:

datatable.AsEnumerable().Take(5);

使用上述两个职位,以下工作对我来说:

foreach (DataRow _dr in DataSet.Tables[<tblname>].Select("", "Timestamp DESC").AsEnumerable().OfType<DataRow>().Take(5))
foreach(DataSet.Tables[]中的DataRow\u dr.Select(“,“Timestamp DESC”).AsEnumerable().OfType().Take(5))
因此,现在您可以根据需要进行过滤,根据需要进行排序,然后仅获取所需的记录量,然后对它们进行迭代,无论是1还是100


希望这能帮助别人。

这就是我的工作:

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

这基本上是一次迭代。这正是询问者不想要的@Andreas Niedermair,据我所知,querist不想用迭代来编写自己的代码。@Andreas:从技术上讲,调用
.AsEnumerable().Take(5)
还不是迭代。然而,无论如何,枚举该查询所表示的数据将需要一次迭代……因此我不完全理解OP的目标。@belousov:这就是我没有否决的原因:)@jrista:调用方法不是迭代,但它将以迭代结束……Pavel belousov,正确的语法如下。yourDatatable.AsEnumerable().OfType().Take(5.CopyToDataTable();谢谢,但我收到一个错误:筛选器表达式“Top 5”的计算结果不是布尔术语。为什么不调整用于构建数据表/数据集的参考底图选择?-其他一切都将是一个迭代……我不知道你所说的“没有迭代”是什么意思。无论如何,如果您希望枚举任何形式的集合中的数据,您必须在某个点迭代该数据。即使您使用LINQ的.Take()语句,您最终也会对您所获取的记录进行迭代。@jrista,您始终可以执行
行[0]、行[1]、…、行[4]
并避免迭代:-)@darin:至少您不使用索引变量:)@darin:您仍然会使用该语句进行迭代…只是使用“展开”循环…展开与否,概念是一样的。无论如何,您必须“迭代”这些行以获取它们的数据。我能得出的唯一结论是,我误解了OP在此上下文中对“迭代”一词的含义/理解。