0
私はIEnumerableを返し、最初の文字でブランドをグループ化したブランドのコレクションを持っています。コレクションのアイテムを最初の文字でグループ化する
次のレンダリング@{
var brands = Service.GetBrands();
<div class="list">
@foreach (var brand in brands.GroupBy(x => x.Substring(0, 1).ToUpper(), (alphabet, subList) => new { Alphabet = alphabet, SubList = subList.OrderBy(x => x).ToList() }).OrderBy(x => x.Alphabet))
{
<h4 class="letter">@brand.Alphabet</h4>
<div class="row">
@foreach (var item in brand.SubList)
{
<div class="brand col-md-3">
<div class="brand__title">@item</div>
</div>
}
</div>
}
</div>
}
:
しかし、誰のブランドは、たとえばで始まるない場合の手紙B、私はいつも手紙A-Zをレンダリングできますか?何とかアルファベットの配列で配列に加わることができますか?
char[] letterArray = "ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ".ToCharArray();
また、「0-9」グループの数字で始まるブランドをグループ化することはできますか?
ありがとうございました。アルファベットは文字配列であり、文字は文字であるため、x.StartsWith(letter.ToString())する必要があります しかし、数字で始まるか、既存の配列に追加するブランドがある場合は、これらは "0-9"グループにありますか? ブランド= brand.Concat(new [] {"3M"}); –
@bjarne_fこの機能を同じアルファベットループでサポートすることはできません。 –
私は、Regexを使ってループの外で同様のアプローチをしていました。 Regex regex = new Regex(@ "^ \ d"、RegexOptions.None ); var numberBrands = brands.Where(x => regex.IsMatch(x))。OrderBy(x => x); –