关于DataTable 判断 列名是否存在的方法中英文符合不区分?

 

最近系统出现一个错误,排查了很久,发现判断DataTable 列名是否存在时,发现一个坑,居然不会区分中英文符合。

有谁知道其中的原理?先记录一下,免得以后忘记这个天坑。

 

一. 先初始化一个DataTable.

DataTable dt = new DataTable();

dt.Columns.Add("(一)", typeof(string));
dt.Columns.Add("(二)", typeof(string));
dt.Columns.Add("(三)", typeof(string));
dt.Columns.Add("(四)", typeof(string));

DataRow dr = dt.NewRow();
dr[0] = "1";
dr[1] = "1";
dr[2] = "1";
dr[3] = "1";

dt.Rows.Add(dr);

 

二. 用dt.Columns.Contains 判断列名是否存在

Console.WriteLine(dt.Columns.Contains(""));      //false
Console.WriteLine(dt.Columns.Contains("(一)"));    //true
Console.WriteLine(dt.Columns.Contains("(一)"));  //true    表面上应该是false

 

三. 用dt.Columns的 索引 判断列名是否存在

Console.WriteLine(dt.Columns[""] == null);     //true
Console.WriteLine(dt.Columns["(一)"] == null);   //false
Console.WriteLine(dt.Columns["(一)"] == null); //false  按道理应该是true

 

posted @ 2018-12-07 11:31  浩魔  阅读(1251)  评论(0)    收藏  举报