C# ForEach字符串concat

C# ForEach字符串concat,c#,string,C#,String,一个新手问题。我有一个foreach循环,在这里我试图访问一个row对象的属性并分配给一个字符串 foreach(row in Dataset) { string finalName= row.name; } 在每次迭代中,我需要将每行的name属性连接到finalName \非常感谢,根据您的性能要求,您可以使用加法运算符: string finalName = string.Empty; foreach(row in Dataset) { finalName += row.na

一个新手问题。我有一个foreach循环,在这里我试图访问一个row对象的属性并分配给一个字符串

foreach(row in Dataset)
{
 string finalName= row.name;

}
在每次迭代中,我需要将每行的name属性连接到finalName


\非常感谢,

根据您的性能要求,您可以使用加法运算符:

string finalName = string.Empty;
foreach(row in Dataset)
{
    finalName += row.name;    
}
或使用:

对于非常少量的附件,您不会注意到两个版本之间的差异。但是,如果要组合许多字符串,那么使用StringBuilder可能会带来非常显著的性能和内存优势

还要记住,这将直接一个接一个地放置字符串,因此您可能还希望在每个字符串之间添加空格或新行


LINQ one liner特别奖金:

由于您似乎是C语言的新手,我建议您忽略这一点,因为它非常先进,坦率地说,可读性不高(但另一方面,谁不喜欢在代码中加入LINQ的随机位?)。不过,为了完整起见,我将在这里添加它。我不知道性能是什么样的,但是与其他方法相比,一个主要的优点是可以轻松地在字符串之间放置空格或其他字符。只需将标记行中的值更改为您想要分隔组合字符串的任何值(例如,Environment.NewLine或“”)

或者,如果您更喜欢lambdas而不是LINQ:

string finalName = string.Join(
            "", //Change the value here to separate the strings.
            Dataset.Select(row => row.Name).ToArray());

如果你真的只想继续,那么这就是你所需要的

string finalName = "";

foreach(DataRow row in dataset.Tables[tablename].Rows)
{
 finalName += row.name;

}
这里有一个

string finalName = ""

foreach (DataRow row in dataSet.TableX)
{
   finalName += row.Name;
   finalName += Environment.NewLine;
}
这是另一个

StringBuilder finalName = new StringBuilder()

foreach (DataRow row in dataSet.TableX)
{
    finalName.Append(row.Name);
    finalName.Append(Environment.NewLine);
}

只是几件事

  • DataSet
    没有行,它们有
    DataTable
    s,而那些
    DataTable
    s有
    DataRows
  • 您可以使用
    +=
    运算符来执行串联,尽管一般建议是
    StringBuilder
    对象更适合于此,因为性能和内存方面的原因
  • 假设您的
    数据集
    有一个
    数据表
    ,并且您要查找的列被称为
    名称
    ,您可以使用其中任何一个(第一个使用
    +=
    操作符,第二个使用
    StringBuilder


    可以将值添加到列表中,然后将值加入列表中

    List<string> listRows = new List<string>();
        string rowValues = string.Empty;
    
        foreach(row in DataSet)
        {
            string fileName = row.name;
            listRows.Add(fileName);
        }
    
        rowValues = string.Join(",", listRows);
    
    List listRows=new List();
    string rowValues=string.Empty;
    foreach(数据集中的行)
    {
    字符串文件名=row.name;
    添加(文件名);
    }
    rowValues=string.Join(“,”,listRows);
    
    这是什么语言?看起来像是C#,但很可能是别的东西。您是否需要在行名称之间附加某种分隔符,或者在最终结果中使用很长的名称?@Dillie-O很好地说明了为什么使用分隔符可能是个好主意,+1我很确定您不希望在foreach中声明“finalName”。@Chris:他是跨行而不是跨列连接数据。一张桌子上有几千条记录是很平常的。@AdamRobinson:糟糕,我把问题看错了。是的,你会想使用StringBuilder!
    StringBuilder finalName = new StringBuilder()
    
    foreach (DataRow row in dataSet.TableX)
    {
        finalName.Append(row.Name);
        finalName.Append(Environment.NewLine);
    }
    
    string finalName = string.Empty;
    
    foreach(DataRow row in dataSet.Tables[0].Rows)
    {
        finalName += row["name"].ToString();
    }
    
    System.Text.StringBuilder builder = new System.Text.StringBuilder();
    
    foreach(DataRow row in dataSet.Tables[0].Rows)
    {
        builder.Append(row["name"].ToString());
    }
    
    string finalName = builder.ToString();
    
    List<string> listRows = new List<string>();
        string rowValues = string.Empty;
    
        foreach(row in DataSet)
        {
            string fileName = row.name;
            listRows.Add(fileName);
        }
    
        rowValues = string.Join(",", listRows);