首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# DataTable 遍歷錯誤:foreach 不能直接作用於 DataTable,需遍歷 Rows 集合

     編輯:程式設計疑難解答

錯誤代碼

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 循環或先收集需刪除的行,避免集合修改異常。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved