我有一个非常简单的结构,看起来像这样:
var list = new List<CategoryInTimeItem>
{
new CategoryInTimeItem { Name = "Food", Year = 2012, Month = 1, Amount = 100 },
new CategoryInTimeItem { Name = "Food", Year = 2012, Month = 2, Amount = 110 },
new CategoryInTimeItem { Name = "Food", Year = 2012, Month = 3, Amount = 130 },
new CategoryInTimeItem { Name = "Food", Year = 2012, Month = 4, Amount = 130 },
new CategoryInTimeItem { Name = "Transport", Year = 2012, Month = 1, Amount = 1000 },
new CategoryInTimeItem { Name = "Transport", Year = 2012, Month = 2, Amount = 1101 },
new CategoryInTimeItem { Name = "Transport", Year = 2012, Month = 3, Amount = 1301 },
new CategoryInTimeItem { Name = "Transport", Year = 2012, Month = 4, Amount = 1301 }
};我想重塑这个结构,这样当它被序列化为json时,结果应该是这样的,每个名字对应一个数组:
[
[["2012-1", 100], ["2012-2", 110], ["2012-3", 130], ["2012-4", 130]],
[["2012-1", 1000], ["2012-2", 1101], ["2012-3", 1301], ["2012-4", 1301]]
]我的linq查询如下所示:
result.Values =
from d in list
orderby d.Name , d.Year , d.Month
group d by d.Name
into grp
select new[]
{
grp.Select(y => new object[] {y.DateName, y.Amount})
};这几乎可以工作,但是我得到了一个额外的“级别”的数组,所以当序列化为json时,结果看起来是这样的:
[
[[["2012-1", 100], ["2012-2", 110], ["2012-3", 130], ["2012-4", 130]]],
[[["2012-1", 1000], ["2012-2", 1101], ["2012-3", 1301], ["2012-4", 1301]]]
]我在这里做错了什么?
发布于 2012-06-08 14:58:42
你几乎已经做到了,只是不是
from d in list
...
select new[]
{
grp.Select(y => new object[] {y.DateName, y.Amount})
}简单地说:
from d in list
...
select grp.Select(y => new object[] {y.DateName, y.Amount}).ToList()你只是在最后添加了一个不必要的数组级别。
https://stackoverflow.com/questions/10944309
复制相似问题