複数のデータ行を持つ「結果」というデータセットがあります。このデータを文字列に変換したいのですが、どうすればいいのかわかりません。私は以下のコードを使用しています:
string output = "";
foreach (DataRow rows in results.Tables[0].Rows)
{
output = output + rows.ToString() + "\n";
}
しかし、私はこれが機能していないため、何かが欠けていると思います。誰かが私を正しい方向に向けることができますか?
データを取得するデータ行の列を指定する必要があります。
以下を試してください:
StringBuilder output = new StringBuilder();
foreach (DataRow rows in results.Tables[0].Rows)
{
foreach (DataColumn col in results.Tables[0].Columns)
{
output.AppendFormat("{0} ", rows[col]);
}
output.AppendLine();
}
私は自分でこれをたくさんやった。すべての行の値にカンマ区切りのリストが必要な場合、これを行うことができます:
StringBuilder sb = new StringBuilder();
foreach (DataRow row in results.Tables[0].Rows)
{
sb.AppendLine(string.Join(",", row.ItemArray));
}
StringBuilderは、大量のデータに対して文字列の連結が著しく遅いため、推奨される方法です。
これを行うことで列の値を取得できます
rows["ColumnName"]
また、適切なタイプにキャストする必要があります。
output += (string)rows["ColumnName"]
rows
オブジェクトはItem
属性を保持しており、各列の値を見つけることができます。行に対して.ToString()
を実行すると、列が連結することは期待できません。行から各列に個別にアクセスし、for
またはforeach
を使用して列の配列をウォークする必要があります。
ここで、クラスを見てみましょう。
http://msdn.Microsoft.com/en-us/library/system.data.datarow.aspx