按名称找不到 DataTable 中的 DataColumn
DataColumn in DataTable not found by name
我正在读取 CSV 文件,其中第一行是 header 行。读取所有列名并将其放入 table 中,如下所示:
foreach (var item in lines[0].Split(';').Where(s => !string.IsNullOrEmpty(s)))
{
table.Columns.Add(item.Trim(), typeof(string));
}
一切都正确,除了我再次尝试从 table 中读取时。
大多数专栏都已阅读,只有一栏除外。
我已经尝试调试并为此专栏编写消息,但它没有进入该功能(见下图)。 (if 语句 return false)
我现在已经尝试了所有方法,包括检查 table 上的区域设置。
Header行:
document title;DocRef;DocRevNo;DocRevDt;RevisionObject;TransRef;Trans Status;DocOrigin;DocRefClient;RespActualDt;First TransDate;Last Update
编辑:
我发现第一个字节很奇怪...
[0]: 65279 ''
[1]: 100 'd'
[2]: 111 'o'
[3]: 99 'c'
[4]: 117 'u'
[5]: 109 'm'
[6]: 101 'e'
[7]: 110 'n'
[8]: 116 't'
[9]: 32 ' '
[10]: 116 't'
[11]: 105 'i'
[12]: 116 't'
[13]: 108 'l'
[14]: 101 'e'
有人知道如何删除该字节(如果存在)吗?
这是解决方案。
该行的开头包含一个隐藏字符 (65279)。通过运行文本通过这个函数,就去掉了问题:
protected string CleanInput(string input)
{
var imp = (input ?? "");
var removeChars = new Char[] { (Char)65279 };
imp = new String(imp.ToCharArray().Where(c => !removeChars.Contains(c)).ToArray());
return imp;
}
我正在读取 CSV 文件,其中第一行是 header 行。读取所有列名并将其放入 table 中,如下所示:
foreach (var item in lines[0].Split(';').Where(s => !string.IsNullOrEmpty(s)))
{
table.Columns.Add(item.Trim(), typeof(string));
}
一切都正确,除了我再次尝试从 table 中读取时。 大多数专栏都已阅读,只有一栏除外。
我已经尝试调试并为此专栏编写消息,但它没有进入该功能(见下图)。 (if 语句 return false)
我现在已经尝试了所有方法,包括检查 table 上的区域设置。
Header行:
document title;DocRef;DocRevNo;DocRevDt;RevisionObject;TransRef;Trans Status;DocOrigin;DocRefClient;RespActualDt;First TransDate;Last Update
编辑:
我发现第一个字节很奇怪...
[0]: 65279 ''
[1]: 100 'd'
[2]: 111 'o'
[3]: 99 'c'
[4]: 117 'u'
[5]: 109 'm'
[6]: 101 'e'
[7]: 110 'n'
[8]: 116 't'
[9]: 32 ' '
[10]: 116 't'
[11]: 105 'i'
[12]: 116 't'
[13]: 108 'l'
[14]: 101 'e'
有人知道如何删除该字节(如果存在)吗?
这是解决方案。 该行的开头包含一个隐藏字符 (65279)。通过运行文本通过这个函数,就去掉了问题:
protected string CleanInput(string input)
{
var imp = (input ?? "");
var removeChars = new Char[] { (Char)65279 };
imp = new String(imp.ToCharArray().Where(c => !removeChars.Contains(c)).ToArray());
return imp;
}