C# 用于切换维度的Linq GroupBy
我有这样的结构:C# 用于切换维度的Linq GroupBy,c#,linq,C#,Linq,我有这样的结构: var data1 = new Dictionary<int, List<string>> { { 1, new List<string> { "A", "B", "C" } }, { 2, new List<string> { "B", "C" } } }; var data2 =
var data1 = new Dictionary<int, List<string>>
{
{ 1, new List<string> { "A", "B", "C" } },
{ 2, new List<string> { "B", "C" } }
};
var data2 = new Dictionary<string, List<int>>
{
{ "A", new List<int> { 1 } },
{ "B", new List<int> { 1, 2 } },
{ "C", new List<int> { 1, 2 } }
};
var data1=新字典
{
{1,新列表{“A”、“B”、“C”},
{2,新列表{“B”,“C”}
};
我需要把它转换成这个结构:
var data1 = new Dictionary<int, List<string>>
{
{ 1, new List<string> { "A", "B", "C" } },
{ 2, new List<string> { "B", "C" } }
};
var data2 = new Dictionary<string, List<int>>
{
{ "A", new List<int> { 1 } },
{ "B", new List<int> { 1, 2 } },
{ "C", new List<int> { 1, 2 } }
};
var data2=新字典
{
{“A”,新列表{1},
{“B”,新列表{1,2},
{“C”,新列表{1,2}
};
我如何使用Linq来做到这一点?我使用GroupBy吗
谢谢你确实需要它成为一本字典
还是类似的东西?我会用它压平,然后:
然后,您仍然可以像使用字典一样使用它:
foreach (var x in data2["B"])
{
Console.WriteLine(x); // Prints 1 then 2
}
您可以这样做:
var data2 =
(from p in data1
from v in p.Value
group p by v)
.ToDictionary(g => g.Key, g => g.Select(x => x.Key).ToList());