选择不同的名称并组合List <t>中的对象属性

时间:2016-10-26 14:45:58

标签: c# linq highcharts

我下面有一个List,我试图结合T.name属性并总结T.score属性

数据

Name | score
-------------
Jon  | 50
Jon  | 100
Ash  | 100
Ash  | 75

期望的结果是

Jon  | 150
Ash  | 175

我能够在LINQ中执行此操作并创建具有所需结果的var

List<PieSeriesData> PiSeriesData = new List<PieSeriesData>();
var x = PiSeriesData.GroupBy(i => i.Name)
                    .Select(g => new { Id = g.Key, Total = g.Sum(i => i.Score) })
                    .ToList();

问题是我需要x作为List类型,这是HighCharts nuget所需要的。

2 个答案:

答案 0 :(得分:1)

为什么不创建新类

public class PieSeriesRenderData
{
    public string ID { get; set; }
    public int Total { get; set; }
}

之后返回:

List<PieSeriesData> piSeriesData = new List<PieSeriesData>();
var x = piSeriesData.GroupBy(i => i.Name)
                    .Select(g => new PieSeriesRenderData { Id = g.Key, Total = g.Sum(i => i.Score) })
                    .ToList();

现在您将拥有List<PieSeriesRenderData>的对象,您可以从Web服务将其作为Json返回,并且您将在ajax.successful方法中呈现高清图。

答案 1 :(得分:1)

据我所知,从聊天中您需要输出为List<PieSeriesData>。您需要在PieSeriesData而不是匿名类型中投射select类的新对象:_请注意,您还需要分配存在的属性而不使用Id之类的新属性和Total

List<PieSeriesData> PiSeriesData = new List<PieSeriesData>();
var x = PiSeriesData.GroupBy(i => i.Name)
                    .Select(g => new PieSeriesData { 
                        Name = g.Key, 
                        Score = g.Sum(i => i.Score) 
                    }).ToList();

// Now x is of type: List<PieSeriesData>