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);
}
如果有人能给我指明正确的方向,我将不胜感激。谢谢
如果我理解正确,您需要动态属性名称。你只能使用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);