我使用highcharts显示一些数据...但由于我的查询没有以某种图表的正确格式返回数据,因此我遇到了问题。
年份关键值
2011 Key1 5
2011 Key2 10
2012 Key1 12
2012 Key2 8
2013 Key1 3
这是我的查询的一部分:
XAxisList = db.Datas.Where(w => w.CategoryID == measurementID).Select(x => x.Year).Distinct(),
Data = from d in db.Datas
where d.CategoryID == measurementID
group d by d.DataKey into g
select new
{
Key = g.Key,
Values = g.Select(s => s.Value)
}
这是我的linq查询返回的内容:
"XAxisList": [
"2011",
"2012",
"2013"
],
"Data": [
{
"Key": "Key1",
"Values": [
"5",
"12"
"3"
]
},
{
"Key": "Key2",
"Values": [
"10",
"8"
]
}
]
如何添加' null' Key2值中的数组值如下所示?
"XAxisList": [
"2011",
"2012",
"2013"
],
"Data": [
{
"Key": "Key1",
"Values": [
"5",
"12"
"3"
]
},
{
"Key": "Key2",
"Values": [
"10",
"8",
**null**
]
}
]
提前感谢您的帮助!
答案 0 :(得分:2)
根据您的数据集,这根本无法完成。如果您的数据集包含以下记录
2013 Key2 null
然后就不会有任何问题。
如果您考虑以下事项,您可以理解为什么不能这样做:
group d by d.DataKey into g
你在那做什么?
您正在根据DataKey
属性对记录进行分组。由于有两个不同的密钥key1
和key2
,因此会有两个组。 key1
组将有三条记录,key2
组将有两条记录。
此外,我认为你无法克服这个问题。根据您的数据我可以理解,您有一些键的年度值,并且您希望使用它们来创建图表。
现在缺少key2
和年2013
的值。所以你认为如果你可以在相应序列的末尾添加null
,一切都会好的。
{
"Key": "Key2",
"Values": [
"10",
"8",
"null"
]
}
您是否考虑过错过2012年价值的情况?它会完全一样!因此,在Values
数组的末尾添加null是没有任何意义的。
如果Year
值具体或在特定范围内,我可以提出一个想法,但我不确定是否是这种情况。
答案 1 :(得分:1)
我会在查询后对报告或图表进行修改,否则会非常混乱:
XAxisList = db.Datas.Where(w => w.CategoryID == measurementID).Select(x => x.Year).Distinct(),
Data = //your query
int largest = Data.Values.Max(v => v.Count);
foreach(var d in Data)
{
while(d.Values.Count < largest)
d.Values.Add(null);
}
或类似的。您可能需要使用Values
的{{1}}列表来获取ToList
方法。