具有唯一键和值的组数据

Cry*_*man 6 .net c# linq group-by

我有一组以下数字:

1  137
1  143
11 37
11 46
11 132
46 65
46 139
69 90
Run Code Online (Sandbox Code Playgroud)

现在,我需要按照组值中没有组键的方式将数据按第一个值分组.所以,例如,如果我只是简单地对数据进行分组,我会得到这样的结果:

1  137
   143
11 37
   46
   132
46 65
   139
69 90
Run Code Online (Sandbox Code Playgroud)

这里是第三组中的组密钥和第二组中的组值.在这种情况下,我需要将第三组的组值合并到第二组并删除第三组.分组的最终结果应如下所示:

1  137
   143
11 37
   46
   132
   65
   139
69 90
Run Code Online (Sandbox Code Playgroud)

我对C#比较新,所以我想知道使用LINQ是否有一种奇特的方式.

Sal*_*ari 1

尝试这个 LINQ 解决方案:

var numbers = new List<Number>
{
    new Number {X = 1, Y = 137},
    new Number {X = 1, Y = 143},
    new Number {X = 11, Y = 37},
    new Number {X = 11, Y = 46},
    new Number {X = 11, Y = 132},
    new Number {X = 46, Y = 65},
    new Number {X = 46, Y = 139},
    new Number {X = 69, Y = 90}
};
var result = numbers.GroupBy(c => c.X);
var result2 = numbers.FirstOrDefault(c => result.Select(d => d.Key).Contains(c.Y));

var finalResult = numbers.Where(x => x.X == result2?.Y)
                         .Select(x =>  { x.X = result2.X;x.Y = x.Y; return x; } )
                         .Union(numbers.Where(c => c.X != result2?.Y)).GroupBy(c => c.X ,
                         (key, element) => new
                         {
                             Key = key,
                            Element = element.Select(c => c.Y).ToList()
                         });
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述