Bri*_*n D 5 .net c# linq string dictionary
我有一个返回以下格式的查询:
{ "tesla", "model s" }
{ "tesla", "roadster" }
{ "honda", "civic" }
{ "honda", "accord" }
Run Code Online (Sandbox Code Playgroud)
我想把它转换成类似的字典<string, string[]>:
{ "tesla" : ["model s", "roadster"], "honda" : ["civic", "accord"] }
Run Code Online (Sandbox Code Playgroud)
我试过这个:
var result = query.Select(q => new { q.Manufacturer, q.Car}).Distinct().ToDictionary(q => q.Manufacturer.ToString(), q => q.Car.ToArray());
Run Code Online (Sandbox Code Playgroud)
但到目前为止我没有运气.我觉得这是做什么的实际上是试图添加像个别项目"tesla" : ["model s"]和"tesla" : ["roadster"],这就是为什么它的失败......任何简单的方法来完成我想在LINQ做什么?
您需要首先按键对每个项目进行分组,然后构建字典:
result = query.Select(q => new { q.Manufacturer, q.Car}).Distinct()
.GroupBy(q => q.Manufacturer)
.ToDictionary(g => g.Key,
g => g.Select(q => q.Car).ToArray());
Run Code Online (Sandbox Code Playgroud)
当然,还有一个ILookup<string, string>更简单的方法:
result = query.Select(q => new { q.Manufacturer, q.Car }).Distinct()
.ToLookup(q => q.Manufacturer, q => q.Car);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |