我有这个结构:
var data1 = new Dictionary<int, List<string>>
{
{ 1, new List<string> { "A", "B", "C" } },
{ 2, new List<string> { "B", "C" } }
};
Run Code Online (Sandbox Code Playgroud)
我需要将它转换为这个结构:
var data2 = new Dictionary<string, List<int>>
{
{ "A", new List<int> { 1 } },
{ "B", new List<int> { 1, 2 } },
{ "C", new List<int> { 1, 2 } }
};
Run Code Online (Sandbox Code Playgroud)
我如何使用Linq来做到这一点?我使用GroupBy吗?
谢谢
你肯定需要它是一个Dictionary<string, List<int>>
或类似的东西吗?我SelectMany
用来压扁,然后ToLookup
:
var data2 = data1.SelectMany(pair => pair.Value, (p, v) => new { p.Key, Value = v })
.ToLookup(x => x.Value, x => x.Key);
Run Code Online (Sandbox Code Playgroud)
然后你仍然可以像使用它一样使用它:
foreach (var x in data2["B"])
{
Console.WriteLine(x); // Prints 1 then 2
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
219 次 |
最近记录: |