如何在字符串生成器内对锚链接标题进行排序
本文关键字:链接 标题 排序 字符串 | 更新日期: 2023-09-27 18:35:33
>我有以下内容:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < contentList.Count;i++)
{
sb.Append("<div class='"justPad'">");
sb.Append("<a class='"defaultLinks'" ");
sb.Append("href=" + contentList[i].Quicklink + " ");
sb.Append("title=" + contentList[i].Title + ">" + contentList[i].Title + "</a>");
sb.Append("</div>");
}
Label2.Text = sb.ToString();
结果是:
<span id="ctl00_BodyPlaceHolder_Label2">
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=3198" title="Hammond, John">Hammond, John</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=3205" title="Beezer, Michelle">Beezer, Michelle</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=3208" title="Tops, John">Tops, John</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=3209" title="Kew, Lauren">Kew, Lauren</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=352" title="Perez, Lance">Perez, Lance</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=353" title="Powell, French">Powell, French</a></div>
</span>
如您所见,显示顺序未排序。
如何根据contentList[i].Title
对字符串生成器进行排序,因此最终结果是:
<span id="ctl00_BodyPlaceHolder_Label2">
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=3205" title="Beezer, Michelle">Beezer, Michelle</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=3198" title="Hammond, John">Hammond, John</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=3209" title="Kew, Lauren">Kew, Lauren</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=352" title="Perez, Lance">Perez, Lance</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=353" title="Powell, French">Powell, French</a></div>
<div class="justPad"><a class="defaultLinks" href="/pro.aspx?id=3208" title="Tops, John">Tops, John</a></div>
</span>
这很简单 - 在构建链接列表之前对内容列表进行排序:
foreach (var content in contentList.OrderBy(c => c.Title))
{
sb.Append("<div class='"justPad'">");
sb.Append("<a class='"defaultLinks'" ");
sb.Append("href='"" + content.Quicklink + "'" ");
sb.Append("title='"" + content.Title + "'">" + content.Title + "</a>");
sb.Append("</div>");
}
还可以考虑使用内插字符串来使代码更具可读性:
sb.Append($"<a class='defaultLinks' href='{content.Quicklink}' title='{content.Title}'>");
注意:如果要创建一些 html,请考虑使用 HtmlTextWriter。您可以写入字符串(与 StringBuilder 一样)或直接写入任何其他 TextWriter,以避免创建大的内存中字符串:
// using System.Web.UI
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
writer.AddAttribute(HtmlTextWriterAttribute.Id, "ctl00_BodyPlaceHolder_Label2");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
foreach (var content in contentList.OrderBy(c => c.Title))
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, "justPad");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
writer.AddAttribute(HtmlTextWriterAttribute.Class, "defaultLinks");
writer.AddAttribute(HtmlTextWriterAttribute.Href, content.Quicklink);
writer.AddAttribute(HtmlTextWriterAttribute.Title, content.Title);
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.WriteEncodedText(content.Title);
writer.RenderEndTag();
writer.RenderEndTag();
}
writer.RenderEndTag();
}