foreach (DataRow row in myDataTable.Select())
foreach (DataRow row in myDataTable.AsEnumerable())
foreach (DataRow row in myDataTable.Rows)
Run Code Online (Sandbox Code Playgroud)
有什么区别?
Rows不是强类型 - 所以每次迭代都会有一个强制转换,你不能轻易地使用LINQ来对象.(我相信AsEnumerable()也必须在内部对每个迭代进行强制转换,但至少你可以轻松地将它用于其他LINQ方法.)
Select 需要构建一个数组,因此显然会有性能损失.
个人我会使用,AsEnumerable()除非你想在循环中修改表,在这种情况下,事先Select构建一个数组的事实可能实际上是一个优势.