Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于切换维度的Linq GroupBy_C#_Linq - Fatal编程技术网

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());