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