【发布时间】:2015-03-10 20:39:09
【问题描述】:
我正在尝试将一些数据转换为 HighCharts 库为其系列数据所期望的 json 对象。这是格式:
var series = [
{
name : "Duplicate Transactions"
data : [190, 107]
},
{
name : "Unique Transactions"
data : [55, 51]
}
]
我的后端代码中有这样的对象列表:
UsageData usageData = new UsageData()
{
{UsageType = "FIND", DupTrans = 190, UniqTrans = 55 },
{UsageType = "PARTS", DupTrans = 107, UniqTrans = 51 }
};
到目前为止,我有这个:
var dup = usageData.GroupBy(d => d.DuplicateTransactions)
.Select(g => new
{
name = "Duplicate Transactions",
usageData = g.Select(c => c.DuplicateTransactions).ToArray()
});
var uniq = usageData.GroupBy(d => d.UniqueTransactions)
.Select(g => new
{
name = "Unique Transactions",
usageData = g.Select(c => c.UniqueTransactions).ToArray()
});
但是我得到的输出不是我们想要的:
[
{
"name" : "Duplicate Transactions",
"data" : [190]
},
{
"name" : "Duplicate Transactions",
"data" : [107]
}
]
[
{
"name" : "Unique Transactions",
"data" : [55]
},
{
"name" : "Unique Transactions",
"data" : [51]
}
]
【问题讨论】:
-
你能指出输出有什么问题吗?预期的格式是什么?它看起来和第一个完全一样。编辑:我想我明白了,但它仍然有点令人困惑。
-
在第一个中,每个事务的数据被分组。在第一个对象中,数据是 190 和 107 一起。在我的输出中,它们是分开的。
-
您正在使用
UniqueTransactions和DuplicateTransactions属性作为组的键,因此它按它们分组,因为它们是唯一的。如果您不需要按键对项目进行分组,则此处不需要GroupBy。您需要删除GroupBy呼叫并仅使用Select呼叫而不进行分组。 -
好的,所以我删除了 GroupBy 并这样做了:
var uniq = data.Select(d => new { name = "Unique Transactions", data = d.UniqueTransactions });仍然给我相同的输出。 -
我为什么不走明显的路线?总是想太多。
标签: c# json linq highcharts