2016-05-18 17 views
1

最初に最初の質問はthis oneと非常に似ています。 29 - - 20から、その後19 統計情報の年齢別にユーザーをグループ化する

    1. (排他)12の下でみんな
    2. その後、12から:実際には、それは私がグループに以下のような、すべてのユーザーが必要であることを除いて、同じことです
    3. ...
    4. 以上80(包括的)

    他の質問でdasblinkenlightからの回答をもとに、私はやることができました:

    結果セットの場合
    var ageStats = vModel 
              .GroupBy(l => 10 * (l.Age/10)) 
              .OrderBy(x => x.Key) 
              .Select(g => new 
              { 
               Name = g.Key, 
               Count = g.Select(l => l.Age).Count() 
              }).ToList(); 
    

    1. 0-9
    2. 10-19
    3. 20-29
    4. ...

    だから私は何をすべき私はパターンを達成するためには?

    ありがとうございます!

  • 答えて

    2
    var ages = new[] { 12, 19, 29, 80 }; 
    
    var grouped = ages.Select(r => new { 
           Name = r, 
           Count = vModel.Count(x => x.Age >= r) 
          }); 
    
    0

    これを試してみてください、私はパフォーマンスを知らない

    var ages = new int[12, 19, 29, 80]; 
    var func = new Func<int, int>(a=>{ 
    
        for(var i = 0; i<ages.Length; i++){ 
         if(a<ages[i]) 
          continue; 
         return i; 
        } 
        return 0; 
    }); 
    vModel.GroupBy(m=>func(m.Age)).... 
    
    0

    あなたがアプローチを使用することができますがhereを言及し、このコードを使用します

    var ages = new List<int> { 12, 19, 29, 39, 49, 59, 69, 80, int.MaxValue}; 
    var categories = vModel.GroupBy(item => ages.FirstOrDefault(ceil => ceil >= item));