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

C# DataTable.Select 列名為純數字時的正確寫法

     編輯:程式設計綜合問答

問題情境

使用 `DataTable.Select("FilterExpression")` 時,若欄位名稱為純數字(如 "2023"、"123"),直接寫入條件會被視為數值常數而非欄位名,導致語法錯誤或邏輯錯誤。

解決方案:使用方括號括住欄位名

與 SQL Server 相同,`DataTable.Select` 的運算式語法支援以 `[ ]` 包裹識別碼:

// 錯誤寫法
var rows = dt.Select("2023 > 100"); // 視為數值比較

// 正確寫法
var rows = dt.Select("[2023] > 100"); // 明確指定欄位名

完整範例

DataTable dt = new DataTable();
dt.Columns.Add("2023", typeof(int));
dt.Columns.Add("Name", typeof(string));

dt.Rows.Add(150, "ItemA");
dt.Rows.Add(80, "ItemB");

// 正確篩選
DataRow[] result = dt.Select("[2023] > 100");
// result 僅包含 ItemA

其他特殊字元欄位名處理

同樣適用於包含空格、關鍵字、特殊符號的欄位名:

  • `[Order Date]` — 含空格
  • `[Select]` — SQL 關鍵字
  • `[User.Name]` — 含點號

補充:動態建構條件字串

string colName = "2023"; // 可能來自變數
string filter = $"[{colName}] > 100";
DataRow[] rows = dt.Select(filter);

常見誤區

嘗試用雙引號、單引號或反引號包裹欄位名均無效,唯有方括號 `[ ]` 為 `DataTable.Select` 運算式語法規定的識別碼分隔符。

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