Получение значений datarow в строку? - PullRequest
25 голосов
/ 08 марта 2012

У меня есть набор данных под названием «результаты» с несколькими строками данных. Я хотел бы получить эти данные в строку, но я не могу понять, как это сделать. Я использую следующий код:

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

Однако я думаю, что что-то упустил, потому что это не работает. Может ли кто-нибудь указать мне правильное направление?

Ответы [ 4 ]

40 голосов
/ 08 марта 2012

Вам необходимо указать, из какого столбца данных вы хотите получать данные.

Попробуйте следующее:

        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();
        }
23 голосов
/ 08 марта 2012

Я сам много сделал.Если вам нужен только список через запятую для всех значений строки, вы можете сделать это:

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

StringBuilder является предпочтительным методом, так как конкатенация строк значительно медленнее для больших объемов данных.

6 голосов
/ 08 марта 2012

Вы можете получить значение столбца, выполнив это

 rows["ColumnName"]

Вам также придется привести к соответствующему типу.

 output += (string)rows["ColumnName"]
3 голосов
/ 08 марта 2012

Ваш rows объект содержит атрибут Item, в котором вы можете найти значения для каждого из ваших столбцов. Вы не можете ожидать, что столбцы объединятся, когда вы делаете .ToString() в строке. Вы должны получить доступ к каждому столбцу из строки отдельно, используйте for или foreach, чтобы пройти массив столбцов.

Вот взгляните на класс:

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

...