2011-01-23 74 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是一個匿名類型有一個屬性,「公司」,這是公司的名稱序列。

相關問題