如何限制foreach循环n运行?

tro*_*man 8 c# datatable

假设我有以下循环:

foreach (DataRow dr in table.rows)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何让它比n次运行更频繁?

Jon*_*eet 19

如果rows实际上只是来自DataTable.Rows,Take给出的简单答案将不起作用,因为DataRowCollection只实现非泛型IEnumerable接口,而LINQ需要通用接口.你需要这样的东西:

// Uses DataTableExtensions.AsEnumerable
foreach (DataRow dr in table.AsEnumerable().Take(50))
Run Code Online (Sandbox Code Playgroud)

要么

// Uses Enumerable.Cast
foreach (DataRow dr in rows.Cast<DataRow>().Take(50))
Run Code Online (Sandbox Code Playgroud)


Ada*_*lph 10

你可以试试

using System.Linq;
...
...
...
foreach (DataRow dr in rows.Cast<DataRow>().Take(50)) { }
Run Code Online (Sandbox Code Playgroud)

请注意,您必须调用Cast<DataRow>()才能转换DataRowCollectionIEnumerable<DataRow>,这将允许您使用Take()扩展方法.