开发者

Create JSON object instead of an Array using LINQ/JavaScriptSerializer

开发者 https://www.devze.com 2023-02-06 11:26 出处:网络
Hey folks, hope you\'ve all had a good break over the holidays. I\'ve created a WebService which returns a list of cities and companies within those cities as a JSON string using LINQ/JavaScriptSeria

Hey folks, hope you've all had a good break over the holidays.

I've created a WebService which returns a list of cities and companies within those cities as a JSON string using LINQ/JavaScriptSerializer.

My code is roughly

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);
开发者_运维技巧

That produces the following JSON string

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

However I want to make the city the key so I can easily search by it

For example

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

Any ideas?


Just an idea... try

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

So this will build a Dictionary<string, xxx> where xxx is an anonymous type with a single property, "companies" which is a sequence of company names.

0

精彩评论

暂无评论...
验证码 换一张
取 消