c# - 使用 LINQ/JavaScriptSerializer 创建 JSON 对象而不是数组

标签 c# linq json serialization

大家好,希望你们假期都过得愉快。

我创建了一个 WebService,它使用 LINQ/JavaScriptSerializer 将城市和这些城市中的公司列表作为 JSON 字符串返回。

我的代码大概是

var data = from c in db.Companies
           group c by c.City into cities
           select new
           {
               city = cities.Key,
               companies = from company in cities
                     select company.Name
           };

JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Serialize(data);

生成以下 JSON 字符串

[
  {"city":"Auckland","companies":["Company1","Company2"]},
  {"city":"Wellington","companies":["Company3","Company4","Company5"]}
]

不过我想把城市作为关键字,这样我就可以很容易地通过它进行搜索

例如

[
  "Auckland" : {"companies":["Company1","Company2"]},
  "Wellington" : {"companies":["Company3","Company4","Company5"]}
]

有什么想法吗?

最佳答案

只是一个想法……试试

var data = db.Companies
             .GroupBy(c => c.City)
             .ToDictionary(g => g.Key,
                           g => new { companies = g.Select(c => c.Name) });

所以这将构建一个 Dictionary<string, xxx>其中 xxx是具有单个属性的匿名类型,“companies”是公司名称的序列。

关于c# - 使用 LINQ/JavaScriptSerializer 创建 JSON 对象而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4773151/

相关文章:

javascript - 使用 json 文件创建动态 react 表单 - Angular

javascript - JSON/JavaScript 获取对象键

javascript - 在 extjs 中渲染表单 html 标签中的对象

c# - 如何使用 C# 获取 Active Directory 中所有域的列表

c# - 为什么这个字节结构反序列化单元测试失败?

c# - LINQ中的include方法用于Left Join?

c# - linq 不区分大小写和修剪比较

asp.net - LINQ 中的匿名类型成员声明符无效

c# - 如何使用 VB.net 或 C# 从 Excel 动态删除行并保存

c# - asp.net Core mvc隐藏和排除Web Api Controller 方法