C# 以costum格式联接字符串列表

C# 以costum格式联接字符串列表,c#,string,concatenation,C#,String,Concatenation,我有一个这样定义的字符串列表 List<String> lstHeaders = new List<string>(new String[]{"str","str1","str2"}); listlstheaders=新列表(新字符串[]{“str”、“str1”、“str2”}); 我想要一种方法,以一种特定的格式连接所有的elemenet,以获得类似的内容 <td>str</td><td>str1</td><

我有一个这样定义的字符串列表

List<String> lstHeaders = new List<string>(new String[]{"str","str1","str2"}); 
listlstheaders=新列表(新字符串[]{“str”、“str1”、“str2”});
我想要一种方法,以一种特定的格式连接所有的elemenet,以获得类似的内容

<td>str</td><td>str1</td><td>str2</td>
"<th>"+lstHeaders.functionToGetFormated()+"</th>"
strstr1str2
但是把它放到在线的代码中,就像这样

<td>str</td><td>str1</td><td>str2</td>
"<th>"+lstHeaders.functionToGetFormated()+"</th>"
“”+lstHeaders.functionToGetFormatted()+“”

为此编写自己的扩展方法可能更有意义。没有什么内置的东西会像那样工作(我知道)


为此编写自己的扩展方法可能更有意义。没有什么内置的东西会像那样工作(我知道)


使用
StringBuilder
类:

var sb = new StringBuilder();
lstHeaders.ForEach(x => sb.AppendFormat("<td>{0}</td>", x));
return sb.toString()
var sb=new StringBuilder();
ForEach(x=>sb.AppendFormat(“{0}”,x));
把某人送回原处

使用
StringBuilder
类:

var sb = new StringBuilder();
lstHeaders.ForEach(x => sb.AppendFormat("<td>{0}</td>", x));
return sb.toString()
var sb=new StringBuilder();
ForEach(x=>sb.AppendFormat(“{0}”,x));
把某人送回原处

您可以执行以下操作:

string.Format("<td>{0}</td>", string.Join("</td><td>", lstHeaders));
string.Format(“{0}”,string.Join(“,lstHeaders));

您可以执行以下操作:

string.Format("<td>{0}</td>", string.Join("</td><td>", lstHeaders));
string.Format(“{0}”,string.Join(“,lstHeaders));

使用Linq和
字符串。Concat

string result = string.Concat(lstHeaders.Select(s => string.Format("<td>{0}</td>", s)));
string-result=string.Concat(lstHeaders.Select(s=>string.Format(“{0}”,s));
查询语法可能更清晰:

string result = string.Concat(from s in lstHeaders select string.Format("<td>{0}</td>", s));
string result=string.Concat(从lstHeaders中的s选择string.Format(“{0}”,s));

使用Linq和
字符串。Concat

string result = string.Concat(lstHeaders.Select(s => string.Format("<td>{0}</td>", s)));
string-result=string.Concat(lstHeaders.Select(s=>string.Format(“{0}”,s));
查询语法可能更清晰:

string result = string.Concat(from s in lstHeaders select string.Format("<td>{0}</td>", s));
string result=string.Concat(从lstHeaders中的s选择string.Format(“{0}”,s));

一般来说,简单的字符串连接不利于构建html和xml等元数据。如果您绝对确信文本不会损坏元语法,那么您可以使用StringBuilder或LinQ。喂,那些绳子已经逃脱了


否则,您可以考虑使用HTMLTExtReTrIt。在LINQ中使用HtmlTextWriter应该不难。

一般来说,简单的字符串连接对于构建html和xml之类的元数据是有风险的。如果您绝对确信文本不会损坏元语法,那么您可以使用StringBuilder或LinQ。喂,那些绳子已经逃脱了


否则,您可以考虑使用HTMLTExtReTrIt。在LINQ中使用HtmlTextWriter应该不难。

我在用lamda表达式思考,但我不知道如何得到那个结果我在用lamda表达式思考,但我不知道如何得到那个结果result@eli.rodriguez他试图通过提供你所说的你需要的确切方法来完成你的问题+1@eli.rodriguez; 这很可能导致不可重用的解决方案和大量内联代码。我想这不是唯一一个类似的用例。这是一个小的更新,使其成为“使用标记包装列表元素”功能的更可重用的实现。@eli.rodriguez他试图通过提供您所需的确切方法来完成您的问题+1@eli.rodriguez; 这很可能导致不可重用的解决方案和大量内联代码。我想这将不是唯一一个类似的用例。一个小的更新,使它成为一个“用标签包装列表元素”函数的更可重用的实现。绝对没有查询语法恶心!虽然功能强大,但在这种情况下,我认为这只会产生大量内联的、难以阅读的和不可重用的代码!虽然功能强大,但在这种情况下,我认为这只会产生大量内联的、难以阅读的和不可重用的代码。