LINQ C#到MVC中的数组JSON对象

本文关键字:数组 JSON 对象 MVC LINQ | 更新日期: 2023-09-27 17:59:07

我的意图是使用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);
}

如果有人能给我指明正确的方向,我将不胜感激。谢谢

LINQ C#到MVC中的数组JSON对象

如果我理解正确,您需要动态属性名称。你只能使用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()}));

您可以从这些答案中获得更多灵感动态属性

您可以使用json.net/newtonsoft创建json对象

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