首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Linq来塑造Json序列化的结构

使用Linq来塑造Json序列化的结构
EN

Stack Overflow用户
提问于 2012-06-08 14:55:42
回答 1查看 95关注 0票数 0

我有一个非常简单的结构,看起来像这样:

代码语言:javascript
复制
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时,结果应该是这样的,每个名字对应一个数组:

代码语言:javascript
复制
[
[["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查询如下所示:

代码语言:javascript
复制
   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时,结果看起来是这样的:

代码语言:javascript
复制
[
[[["2012-1", 100], ["2012-2", 110], ["2012-3", 130], ["2012-4", 130]]],
[[["2012-1", 1000], ["2012-2", 1101], ["2012-3", 1301], ["2012-4", 1301]]]
]

我在这里做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-08 14:58:42

你几乎已经做到了,只是不是

代码语言:javascript
复制
from d in list
...
select new[]
{
    grp.Select(y => new object[] {y.DateName, y.Amount})
}

简单地说:

代码语言:javascript
复制
from d in list
...
select grp.Select(y => new object[] {y.DateName, y.Amount}).ToList()

你只是在最后添加了一个不必要的数组级别。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10944309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档