2011-01-23 71 views
5

嗨,伙计们,希望你们都有很好的休息假期。创建JSON对象而不是使用LINQ/JavaScriptSerializer的数组

我创建了一个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"]} 
] 

任何想法?

+0

我不认为这是有效的JSON。你是否认为你不是指大括号而是方括号? – 2011-01-23 09:39:48

+0

嘿@马克,你是指第二个吗?我手动输入,以便对错误表示歉意。 – Marko 2011-01-23 09:48:37

回答

8

只是一个想法...尝试

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

因此,这将建立一个Dictionary<string, xxx>其中xxx是一个匿名类型有一个属性,“公司”,这是公司的名称序列。

相关问题