我有一个名为“结果”的数据集,其中包含几行数据。我想将这些数据放入字符串中,但我不太清楚该怎么做。我正在使用以下代码:
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
LinQ 来点爱怎么样?
如果你不想要它
List<string>
DataTable dt = new DataTable();
DataRow dr = dt.Rows[0];
List<string> outputs = dt.Select().Select(x => x.ItemArray[0].ToString()).ToList();
如果只是单身
string
string output = string.Join(",", outputs);
有时我会以不同的格式重复使用数据。这就是我通常做的。