private string ComposeListPage(HttpContext context, IDiagnosticInfo info) { var builder = new StringBuilder(); foreach (var group in info.ListAll() .GroupBy(entry => entry.Component, StringComparer.OrdinalIgnoreCase) .OrderBy(group => group.Key)) { builder.AppendLine($"<h2>{group.Key}</h2>"); builder.AppendLine("<ul>"); foreach (var entry in group.OrderBy(entry => entry.Name, StringComparer.OrdinalIgnoreCase)) { builder.AppendLine($"<li><a href=\"{CreateInfoUrl(entry)}\">{entry.Name}</a></li>"); } builder.AppendLine("</ul>"); builder.AppendLine("<br/>"); } return(builder.ToString()); }