循环遍历数据集

时间:2016-09-09 16:44:31

标签: c#

我循环遍历DataSet的行和列,以使用管道分隔符写入文本文件。我有它工作,除了我需要从最后一列留下管道。有没有办法让我调整循环以循环通过fields.count-1然后引用循环外的最后一个字段?

foreach (object item in row.ItemArray)
{
    d = d+ item.ToString() + "|";
}

8 个答案:

答案 0 :(得分:6)

您可以使用String.Join加入任何IEnumerable(包括数组)的内容,例如:

var newText = String.Join("|",row.ItemArray);

答案 1 :(得分:1)

您可以使用Linq Aggregate:

d = row.ItemArray.Aggregate((x, y) => x.ToString() + "|" + y.ToString());

答案 2 :(得分:1)

您可以使用{/ 1}}方法,例如

TrimEnd(Char[])

答案 3 :(得分:1)

您可以使用:

string.Join("|", row.ItemArray);

答案 4 :(得分:1)

您可以使用string.Join方法,如下所示:

string.Join("|", row.ItemArray);

但是,如果您还在foreach循环中执行其他逻辑,请考虑使用StringBuilder。与一遍又一遍地连接字符串相比,这会带来巨大的性能提升。然后,您可以通过调整它的长度来简单地修剪最终的管道。

var d = new StringBuilder();
foreach (object item in row.ItemArray)
     d.Append(item.ToString()).Append("|");

d.Length -= 1;

答案 5 :(得分:0)

循环后

d = d.remove(d.Count()-1);

这将删除字符串的最后一个字符。

答案 6 :(得分:0)

for(int i = 0; i < row.ItemArray.Length; i ++)
{
    if(row.ItemArray[i] == row.itemArray[row.itemArray - 1])
    {
        d = d+ item.ToString();
    }
    else
    {
    d = d+ item.ToString() + "|";
    }
}

答案 7 :(得分:0)

如果添加其他值,则只添加分隔符。

for(int i = 0; i < row.ItemArray.Length; i ++)
{
    if( d.length == 0)
    {
        d = item.ToString();
    }
    else
    {
        d = d + "|" + item.ToString();
    }
}