大家好,希望你们假期都过得愉快。
我创建了一个 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"]}
]
有什么想法吗?
最佳答案
只是一个想法……试试
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”是公司名称的序列。
关于c# - 使用 LINQ/JavaScriptSerializer 创建 JSON 对象而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4773151/