【发布时间】:2020-11-20 06:58:58
【问题描述】:
我有文章数据列表List<Article>
class Article
{
....
public string Author{get; set}
public int ReadingNumber{get; set}
public int LikeNumber{get; set}
public int ForwardingNumber{get; set}
....
}
输入数据
List<Article> input = new List<Article>
{
new Article { Author = "author1", ReadingNumber = 49, LikeNumber = 55, ForwardingNumber = 21 },
new Article { Author = "author1", ReadingNumber = 11, LikeNumber = 35, ForwardingNumber = 79 },
new Article { Author = "author2", ReadingNumber = 25, LikeNumber = 77, ForwardingNumber = 39 },
};
现在我不知道如何使用Linq或其他任何东西将其转换为Highchart列表数据,是这样的:
categories: ['author1','author2']
series: [{
name: 'TotalReadingNumber',
data: [60, 25]
}, {
name: 'TotalLikeNumber',
data: [90, 77]
}, {
name: 'TotalForwardNumber',
data: [100, 39]
}]
我已经厌倦了使用 linq 和 Foreach 方法来生成数据:
var authorData=
(from a in articleList
group a by a.Author into g
select new {
Author = g.Key,
TotalReading = g.Sum(a=>a.ReadingNumber),
TotalLikes = g.Sum(a=>a.LikeNumber),
.......
}).ToList()
然后我使用ForEach方法获取我需要的每一个属性
var totalReading = new AuthorData()
{
name = "TotalReading",
data = new List<string>()
};
authorData.ForEach(a => totalRead.data.Add(a.TotalRead.ToString()));
最后我将它们组合成结果,
var result =
{
Authors=authorData.Select(a=>a.Author).ToList(),
series = new List<AuthorData>{totalReading,totalLike,totalForwrad.....}
}
我认为这很复杂。如何简化此解决方案?
【问题讨论】:
-
嗨@ichPotatodeCXY,您使用了highcharts 标签,但问题似乎与图表无关,而是与数据有关。如果您在使用 Highcharts 时遇到问题,请提供带有硬编码示例数据的演示。
标签: c# linq highcharts