将数据行值获取到字符串中?

问题描述 投票:0回答:5

我有一个名为“结果”的数据集,其中包含几行数据。我想将这些数据放入字符串中,但我不太清楚该怎么做。我正在使用以下代码:

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

但是,我认为我错过了一些东西,因为这不起作用。有人能指出我正确的方向吗?

c# ado.net datarow
5个回答
46
投票

您需要指定要从数据行的哪一列中提取数据。

尝试以下操作:

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

33
投票

我自己也做过很多这样的事。如果您只需要所有行值的逗号分隔列表,您可以这样做:

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

StringBuilder 是首选方法,因为对于大量数据,字符串连接速度明显较慢。


8
投票

您可以通过这样做来获取列值

 rows["ColumnName"]

您还必须转换为适当的类型。

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

4
投票

您的

rows
对象包含一个
Item
属性,您可以在其中找到每列的值。当您在行上执行
.ToString()
操作时,您不能指望列会自行连接。 您应该分别访问行中的每一列,使用
for
foreach
遍历列数组。

来看看班级:

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


0
投票

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

有时我会以不同的格式重复使用数据。这就是我通常做的。

© www.soinside.com 2019 - 2024. All rights reserved.