使用LINQ/JavaScriptSerializer创建JSON对象而不是Array

Mar*_*rko 5 c# linq serialization json

嘿伙计们,希望你们在假期里都有一个好的休息时间.

我创建了一个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);
Run Code Online (Sandbox Code Playgroud)

这会产生以下JSON字符串

[
  {"city":"Auckland","companies":["Company1","Company2"]},
  {"city":"Wellington","companies":["Company3","Company4","Company5"]}
]
Run Code Online (Sandbox Code Playgroud)

但是,我想让城市成为关键,所以我可以轻松地搜索它

例如

[
  "Auckland" : {"companies":["Company1","Company2"]},
  "Wellington" : {"companies":["Company3","Company4","Company5"]}
]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jon*_*eet 8

只是一个想法......试试

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

因此,这将构建一个Dictionary<string, xxx>where xxx是具有单个属性的匿名类型,"公司"是一系列公司名称.