2017-09-12 13 views
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> 
} 

enter image description here

しかし、誰のブランドは、たとえばで始まるない場合の手紙B、私はいつも手紙A-Zをレンダリングできますか?何とかアルファベットの配列で配列に加わることができますか?

char[] letterArray = "ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ".ToCharArray(); 

また、「0-9」グループの数字で始まるブランドをグループ化することはできますか?

答えて

2

このようなことはどうですか?

char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); 
var brands = Service.GetBrands(); 
var numberBrands = brands.Where(x => Char.IsDigit(x.First())); 

<h4 class="letter">0-9<h4> 
    <div class="row"> 
     @foreach(var brand in numberBrands){ 
      <div class="brand col-md-3"> 
       <div class="brand__title">@brand</div> 
      </div> 
     } 
    </div> 

foreach(var letter in alphabet){ 
    var subBrands = brands.Where(x => 
    x.StartsWith(letter.ToString(), StringComparison.OrdinalIgnoreCase)) 
    .OrderBy(x => x); 

    <h4 class="letter">@letter<h4> 
    <div class="row"> 
     @foreach(var brand in subBrands){ 
      <div class="brand col-md-3"> 
       <div class="brand__title">@brand</div> 
      </div> 
     } 

    </div> 
} 
+0

ありがとうございました。アルファベットは文字配列であり、文字は文字であるため、x.StartsWith(letter.ToString())する必要があります しかし、数字で始まるか、既存の配列に追加するブランドがある場合は、これらは "0-9"グループにありますか? ブランド= brand.Concat(new [] {"3M"}); –

+0

@bjarne_fこの機能を同じアルファベットループでサポートすることはできません。 –

+0

私は、Regexを使ってループの外で同様のアプローチをしていました。 Regex regex = new Regex(@ "^ \ d"、RegexOptions.None ); var numberBrands = brands.Where(x => regex.IsMatch(x))。OrderBy(x => x); –

関連する問題