すべて、アプリケーションに統合する予定のSQLパーサーとエディターがあります。次のクエリを実行すると
select * from sys.sysprocesses;
返される列の1つはのタイプですbyte[]
。このコラムは喜んで入れられますがDataTable
、私がそうすると
bindingSource.DataSource = result.DataTable;
そして、データを表示しようとするとDataGridView
、明らかArgumentException
です。この位置で、を表示byte[]
するためにに変更する最良の方法は何ですか?string
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]);
ただし、これは列にを入れようとし、機能string
しbyte[]
ません。クローンを作成してDataTable
からタイプを変更できます。
DataTable dtCloned = dataTable.Clone();
dtCloned.Columns[0].DataType = typeof(String);
foreach (DataRow row in dataTable.Rows)
dtCloned.ImportRow(row);
byte[]
しかし、を16進文字列に変換するための変換ステップが必要です。私が望むことを達成するための最良の、そしてできれば最も効率的な方法は何ですか?
御時間ありがとうございます。