C#:遍历数据表:Rows,Select()或AsEnumerable()

时间:2010-09-06 19:56:44

标签: c# linq datatable

foreach (DataRow row in myDataTable.Select())

foreach (DataRow row in myDataTable.AsEnumerable())

foreach (DataRow row in myDataTable.Rows)

有什么不同吗?

2 个答案:

答案 0 :(得分:7)

Rows不是强类型的 - 所以每次迭代都会有一个强制转换,你不能轻易地在它上面使用LINQ。 (我相信AsEnumerable()也必须在内部对每个迭代进行强制转换,但至少可以轻松地将它用于其他LINQ方法。)

Select需要构建一个数组,因此显然存在性能损失。

我个人使用AsEnumerable()除非你想在循环中修改表,在这种情况下Select预先构建一个数组的事实实际上可能是一个优势。

答案 1 :(得分:0)

如果您尝试使用LINQ查询数据表,请使用AsEnumerable(),否则,您也可以使用循环结构...