【问题标题】:LINQ C# to Array JSON Object in MVCLINQ C# 到 MVC 中的数组 JSON 对象
【发布时间】:2016-07-29 06:24:43
【问题描述】:

我的意图是使用 LINQ 查询,然后为 MVC 控制器返回 JSON。

我想要实现的格式:

[{ 
   "A" : {"Count": 2 },
   "B" : {"Count": 7 },
}]

[{ 
   "A" : [{"Count": 2 }],
   "B" : [{"Count": 7 }],
}]

但到目前为止我只能这样:

[{ 
   {"MG":"A", "Count": 2 },
   {"MG":"B", "Count": 7 }
}]

我尝试了类似下面的方法,它得到了错误

匿名类型成员声明器无效。匿名类型成员必须 使用成员分配、简单名称或成员访问来声明。

public JsonResult groupByTable()
{
    IQueryable<tblSAPMessage> v = sapMessages();
    var data = v.GroupBy(g => g.MaterialGroup)
        .Select(g => new { g.Key.ToString() = new {
                    Count = g.Count()
                }});
    return Json(data, JsonRequestBehavior.AllowGet);
}

感谢有人能指出我正确的方向。谢谢!

【问题讨论】:

    标签: c# json asp.net-mvc linq


    【解决方案1】:

    如果我理解正确,您需要动态属性名称。你只能使用Expando Object 来实现它

    您可以尝试围绕这些行做一些事情。

    dynamic mytype = new ExpandoObject();
    var data = v.GroupBy(g => g.MaterialGroup)
            .Select(g => (IDictionary<string, object>) mytype.Add(g.Key.ToString(),
            new {Count =  g.Count()}));
    

    您可以查看这些答案以获得更多灵感Dynamic properties

    【讨论】:

    • 我觉得我明白了你的想法,但不知何故,我玩弄代码,仍然无法实现。仍然有同样的错误。
    【解决方案2】:

    你可以使用 json.net / newtonsoft 创建一个 json 对象

    using Json.net
    var countObject = new JObject ();
    countObject.Add("count",2);
    var jsonObject = new JObject();
    jsonObject.Add("a", countObject);
    

    【讨论】:

    猜你喜欢
    • 2018-05-23
    • 1970-01-01
    • 2022-11-16
    • 2019-04-30
    • 2020-08-02
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多