0

我有一本字典<string,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 回答