0

の辞書を持っています<string,Rate>

ここで、Rate は次のように定義されます。

class Rate
{
  public string Name { get; set;}
  public int Tier{ get; set;}
  public double Value { get; set;}

  public Rate(string name,int tr,double val)
   { Name = name; Tier = tr; Value = val;}
}

このディクショナリをリストに変換したいと思います。このリストは、上記のレートからティアに分割 (グループ化) され、ダブル配列にはレートからの値も保持されます。

Rate rate1 = new Rate("One",1,1.1);
Rate rate2 = new Rate("Two",1,2.2);
Rate rate3 = new Rate("Three",2,3.3);

もしそうなら..

Dictionary<string,Rate> rates = new Dictionary<string,Rate> { {rate1.Name,rate1},{rate2.Name,rate2},{rate3.Name,rate3}};


List<double[]> myList = (linq result from Rates separated list of arrays by tier)

myList[0] は 1.1 と 2.2 をカウントし、myList[1] は 3.3 をカウントします。

回答は良かったのですが、階層別に並べ替えられたリストを提供するように質問を変更する必要があります。

4

2 に答える 2

3
List<double[]> list = rates
            .GroupBy(pair => pair.Value.Class, pair => pair.Value.Value)
            .Select(doubles => doubles.Select(d => d).ToArray())
            .ToList();
于 2013-04-01T17:16:14.093 に答える
1
List<double[]> myList = rates.GroupBy(p => p.Value.Tier)
                             .Select(g => g.Select(p => p.Value.Value).ToArray())
                             .ToList();
于 2013-04-01T17:10:10.337 に答える