Получение значений datarow в строку?
У меня есть набор данных, называемый "результаты" с несколькими строками данных. Я хотел бы получить эти данные в строку, но я не могу понять, как это сделать. Я использую код ниже:
string output = "";
foreach (DataRow rows in results.Tables[0].Rows)
{
output = output + rows.ToString() + "\n";
}
Однако, я думаю, что у меня что-то не хватает, потому что это не работает. Может ли кто-нибудь указать мне в правильном направлении?
Ответы
Ответ 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