总之,我有一个 SQL 解析器和编辑器,我打算将其集成到我的应用程序中。当我运行以下查询时
select * from sys.sysprocesses;
返回的列之一是byte[]. DataTable然而,当我这样做时,这个专栏很高兴被放入
bindingSource.DataSource = result.DataTable;
并尝试在DataGridView我得到明显的ArgumentException. 在这个位置,最好的方法是在 中将 更改byte[]为 astring以显示DataTable?
我可以遍历DataTable并做一些类似的事情
foreach(DataColumn col in dataTable.Columns)
if (col.DataType == typeof(byte[]))
foreach (DataRow row in dataTable.Rows)
row[col] = Encoding.ASCII.GetString((byte[])row[col]);
但这将尝试将 astring放入byte[]列中,并且不起作用。我可以克隆DataTable然后更改类型,
DataTable dtCloned = dataTable.Clone();
dtCloned.Columns[0].DataType = typeof(String);
foreach (DataRow row in dataTable.Rows)
dtCloned.ImportRow(row);
但我需要一个转换步骤将其转换byte[]为十六进制字符串。实现我想要的最好和最好最有效的方法是什么?
谢谢你的时间。