将LINQ查询转换为Dictionary <string,string []>

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做什么?

p.s*_*w.g 3

您需要首先按键对每个项目进行分组,然后构建字典:

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)