DataTable dt = GetData();
foreach (var row in dt) { } // 編譯錯誤:DataTable 不實現 IEnumerable
// 方式 1:遍歷 Rows 集合(推薦)
foreach (DataRow row in dt.Rows) {
var val = row["ColumnName"];
}
// 方式 2:AsEnumerable() + LINQ
var names = dt.AsEnumerable().Select(r => r.Field<string>("Name"));
// 方式 3:for 循環(性能敏感場景)
for (int i = 0; i < dt.Rows.Count; i++) {
DataRow row = dt.Rows[i];
}
DataTable 本身是表結構容器,不直接實現 IEnumerable。DataTable.Rows 返回 DataRowCollection,實現了 IEnumerable,可直接 foreach。AsEnumerable() 擴展方法將 DataRowCollection 轉為 IEnumerable<DataRow>,支援 LINQ 查詢。修改行狀態(如 row.Delete())時,請使用倒序 for 循環或先收集需刪除的行,避免集合修改異常。