Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择不同的名称并在列表中组合对象属性<;T>;_C#_Linq_Highcharts - Fatal编程技术网

C# 选择不同的名称并在列表中组合对象属性<;T>;

C# 选择不同的名称并在列表中组合对象属性<;T>;,c#,linq,highcharts,C#,Linq,Highcharts,我在下面列出了一个列表,我正在尝试合并T.name属性并总结T.score属性 资料 期望的结果是 Jon | 150 Ash | 175 我能够在LINQ中实现这一点,并创建一个具有所需结果的var List<PieSeriesData> PiSeriesData = new List<PieSeriesData>(); var x = PiSeriesData.GroupBy(i => i.Name) .Select

我在下面列出了一个列表,我正在尝试合并T.name属性并总结T.score属性

资料

期望的结果是

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();
List PiSeriesData=new List();
var x=PiSeriesData.GroupBy(i=>i.Name)
.Select(g=>new{Id=g.Key,Total=g.Sum(i=>i.Score)})
.ToList();

问题是我需要x是一个列表类型,这是HighCharts nuget所需要的。

为什么不创建新类

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 piSeriesData=new List();
var x=piSeriesData.GroupBy(i=>i.Name)
.Select(g=>new pieseresrenderdata{Id=g.Key,Total=g.Sum(i=>i.Score)})
.ToList();

现在您将拥有
List
对象,您可以将其作为Json从web服务返回,并将在ajax.successful方法中呈现highchart。

正如我从聊天中了解到的,您需要输出为
列表。您需要在
select
中投影
PieSeriesData
类的新对象,而不是匿名类型:\您还需要分配现有的属性,而不是使用新的属性,如
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>
List PiSeriesData=new List();
var x=PiSeriesData.GroupBy(i=>i.Name)
.Select(g=>new PieSeriesData{
名称=g.键,
分数=g.Sum(i=>i.Score)
}).ToList();
//现在x的类型是:List

x
是一个列表。。。具有2个属性(Id,Total)的匿名类型的常规列表。。请更好地解释这个问题,因为它目前不清楚。如果您正在调用
.ToList()
,那么
x
应该是一个
列表。不是吗?PieSeriesData有两个以上的属性,如果我理解正确,x只是一个包含两个属性ID和名称的列表,那么不是创建一个匿名对象,而是创建一个
PieSeriesData
对象。是的,因为您是在“选择一个只有两个属性的匿名类型”中创建的。你想要的输出类型是什么?感谢你联系我1对1 Gilad,这正是我需要的x now eqautes列表type@jon.nicholssoftware.com-不客气:)很高兴我能帮上忙
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>