ASP.NET: Telefonliste mit Initiale per Repeater auflisten

Hier mal ein Quick ’n‘ Dirty-Ansatz einer Telefonliste mit Initialen.

.aspx

<asp:Repeater ID="Repeater1" runat="server">
  <HeaderTemplate>
    <table>
  </HeaderTemplate>
  <ItemTemplate>
    <%#SetInitial(Eval("Nachname").ToString())%>
    <tr>
      <td><a href="profil.aspx?ID=<%#Eval("ID")%>">
        <%#Eval("Nachname")%>, <%#Eval("Vorname")%></a></td>
      <td><%#Eval("Telefon")%></td>
      <td><%#Eval("EMail")%></td>
    </tr>
  </ItemTemplate>
  <FooterTemplate>
    </table>
  </FooterTemplate>
</asp:Repeater>

.aspx.cs

// C#
private char initialOld;

public string SetInitial(string lastName)
{
  char initial = Convert.ToChar(lastName.Substring(0, 1).ToUpper());

  if (initial == 'Ä') initial = 'A'; // Umlaute werden unter den
  if (initial == 'Ü') initial = 'U'; // dazugehörigen Vokaln gelisten
  if (initial == 'Ö') initial = 'O';

  if (initialOld != initial)
  {
    initialOld = initial;
    return string.Format(@"
     <tr>
       <td colspan=""3"">
         <span class=""initial""><br/>&nbsp;<br/>{0}</span>
         <a name=""i{1}""></a><span><a href=""#top"">zum Index</a></span>
         <hr />
       </td>
     </tr>", initial, initial);
  }
  else
  {
    return null;
  }
}