我有一个列表,遍历方式如下:
foreach (var obj in mylist)
{
return += obj.Value.ToString() + ";";
}
这好像不起作用。我需要一个 StringBuilder
吗?
我有一个列表,遍历方式如下:
foreach (var obj in mylist)
{
return += obj.Value.ToString() + ";";
}
这好像不起作用。我需要一个 StringBuilder
吗?
你可以使用string.Join
方法。
将指定数组的元素或集合的成员使用指定的分隔符连接起来。
还可以使用Enumerable.Select
方法。
将序列的每个元素投射到新形式上。
return string.Join(";", mylist.Select(x => x.Value));
你的解决方案无法正常工作,因为你正在将字符串与C#中的关键字return
拼接。
使用StringBuilder
初始化,并用分号将值附加到其中。
例如:
StringBuilder sb = new StringBuilder();
foreach (var obj in mylist)
{
sb.AppendFormat("{0};", obj.Value);
}
return sb.ToString();
string.Join()
,您需要传递一个带有IEnumerable参数的字符串,@TheGeneral提供了使用string.Join()
的解决方案,即:var result = string.Join(";", mylist.Select(x => x.Value));
;
是你的分隔符,mylist.Select()
将返回 IEnumerable
的值,这将返回与你的第一种方法相同的结果。
sb.AppendFormat("{0};", obj.Value);
。 - JimiStringBuilder
类有这个功能。我已经更新了我的答案。每天都是学校的一天 ;) - Prasad Telkikar;
,即{0};
。OP 希望在每个obj.Value
后面加上;
,因此我使用了StringBuilder
的AppendFormat()
函数来代替使用+
连接obj.Value
和;
。这样可以更清晰地进行字符串连接。 - Prasad TelkikarmyString
是string
类型,那么字符串是不可变的,每次都会创建一个新的字符串实例,如果迭代100次,则会分配100次内存。为了避免这种情况,我使用了StringBuilder
,你可以阅读有关C#中字符串与StringBuilder的文章,这将让你更深入地了解为什么我没有使用myString+=separator+obj.Value
。 - Prasad Telkikar