C# ForEach字符串concat
一个新手问题。我有一个foreach循环,在这里我试图访问一个row对象的属性并分配给一个字符串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 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);