Подтвердить что ты не робот

Получение значений datarow в строку?

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

 rows["ColumnName"]

Вам нужно будет указать тип соответствия.

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

Ответ 4

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

Здесь рассмотрим класс:

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