Skip to main content
 首页 » 编程设计

c#之如何在 C# 中转换键和数组的集合

2024年02月20日35me-sa

假设我有一个字符串键到小数的集合,如下所示:

{ "Alfred", [1, 2] } 
{ "Batman", [1, 2, 3] } 

如何在 C# 中轻松地将这种关系反转为集合所在的位置:

{ 1, ["Alfred", "Batman"] } 
{ 2, ["Alfred", "Batman"] } 
{ 3, ["Batman" ] } 

请您参考如下方法:

您可以使用 LINQ:

var d = new Dictionary<string,int[]>{ 
    {"Alfred", new[] {1,2}} 
,   {"Batman", new[] {1,2,3}} 
}; 
var res = d 
    .SelectMany(p=>p.Value.Select(v => new {p.Key, Value = v})) 
    .GroupBy(p => p.Value) 
    .ToDictionary(g => g.Key, g => g.Select(v => v.Key).ToArray()); 
foreach (var p in res) 
    Console.WriteLine("{0} = ({1})", p.Key, string.Join(", ", p.Value)); 

此代码产生此输出 ( ideone link ):

1 = (Alfred, Batman) 
2 = (Alfred, Batman) 
3 = (Batman) 

注意g => g.Key和g => g.Select(v => v.Key)的区别:前者选择分组,而后者选择原始字典的键。