总之,我有一个 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[]
为十六进制字符串。实现我想要的最好和最好最有效的方法是什么?
谢谢你的时间。