@using ErsatzTV.Application.MediaCards @using LanguageExt.UnsafeValueAccess @typeparam TCard @{ var letters = new System.Collections.Generic.HashSet(); } @foreach (TCard card in Cards.Filter(c => !string.IsNullOrWhiteSpace(c.Title)).OrderBy(c => c.SortTitle)) { @if (!letters.Contains(card.SortTitle.Head())) { Option maybeLetter = card.SortTitle.ToLowerInvariant().HeadOrNone(); if (maybeLetter.IsSome) { char letter = maybeLetter.ValueUnsafe(); if (letter >= '0' && letter <= '9') { letter = '#'; } letters.Add(letter);
@ChildContent(card)
} } else { @ChildContent } }