web-dev-qa-db-ja.com

データ行の値を文字列に取得しますか?

複数のデータ行を持つ「結果」というデータセットがあります。このデータを文字列に変換したいのですが、どうすればいいのかわかりません。私は以下のコードを使用しています:

string output = "";
foreach (DataRow rows in results.Tables[0].Rows)     
{
    output = output + rows.ToString() + "\n";
}

しかし、私はこれが機能していないため、何かが欠けていると思います。誰かが私を正しい方向に向けることができますか?

25
Kevin

データを取得するデータ行の列を指定する必要があります。

以下を試してください:

        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();
        }
40
Khan

私は自分でこれをたくさんやった。すべての行の値にカンマ区切りのリストが必要な場合、これを行うことができます:

StringBuilder sb = new StringBuilder();
foreach (DataRow row in results.Tables[0].Rows)     
{
    sb.AppendLine(string.Join(",", row.ItemArray));
}

StringBuilderは、大量のデータに対して文字列の連結が著しく遅いため、推奨される方法です。

24
SPFiredrake

これを行うことで列の値を取得できます

 rows["ColumnName"]

また、適切なタイプにキャストする必要があります。

 output += (string)rows["ColumnName"]
6
Matthew

rowsオブジェクトはItem属性を保持しており、各列の値を見つけることができます。行に対して.ToString()を実行すると、列が連結することは期待できません。行から各列に個別にアクセスし、forまたはforeachを使用して列の配列をウォークする必要があります。

ここで、クラスを見てみましょう。

http://msdn.Microsoft.com/en-us/library/system.data.datarow.aspx

3
Andrei G