Создайте объект JSON вместо массива, используя LINQ / JavaScriptSerializer - PullRequest
5 голосов
/ 23 января 2011

Привет, ребята, надеюсь, у вас все были хорошие каникулы.

Я создал WebService, который возвращает список городов и компаний в этих городах в виде строки JSON, используя LINQ / JavaScriptSerializer..

Мой код примерно

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"]}
]

Есть идеи?

1 Ответ

8 голосов
/ 23 января 2011

Просто идея ... попробуйте

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», который представляет собой последовательность названий компаний..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...