【问题标题】:Getting datarow values into a string?将数据行值转换为字符串?
【发布时间】:2018-06-28 05:59:19
【问题描述】:

我有一个名为“结果”的数据集,其中包含多行数据。我想把这些数据变成一个字符串,但我不知道该怎么做。我正在使用以下代码:

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

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

【问题讨论】:

  • 什么不起作用?您是否在某个地方遇到异常?
  • 没有例外。只是“输出”的价值根本不是我所期待的。但是,我认为下面的两个答案让我找到了正确的解决方案。

标签: c# ado.net datarow


【解决方案1】:

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

尝试以下方法:

        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,所以我很高兴有机会在这里使用它。也感谢示例代码!
  • 不客气,StringBuilder 很棒。每当您发现自己多次操作字符串时,请习惯使用它。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

     rows["ColumnName"]
    

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

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

    【讨论】:

    • 谢谢,马修。你和安德烈都正确地需要从每一行的列中获取我的值。我完全忘记了这一点。
    【解决方案4】:

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

    这里,看看类:

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

    【讨论】:

    • 你说得对,安德烈。我忘记了我还必须遍历行中的列。
    猜你喜欢
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2017-06-11
    • 1970-01-01
    相关资源
    最近更新 更多