我有一组以下数字:
1 137
1 143
11 37
11 46
11 132
46 65
46 139
69 90
现在,我需要按照组值中没有组键的方式将数据按第一个值分组。因此,举例来说,如果我只是简单地对数据进行分组,我就会得到这样的结果:
1 137
143
11 37
46
132
46 65
139
69 90
46这是第三组中的组密钥和第二组中的组值。在这种情况下,我需要将第三组的组值合并到第二组并删除第三组。 分组的最终结果应如下所示:
1 137
143
11 37
46
132
65
139
69 90
我对C#比较新,所以我想知道使用LINQ是否有一种奇特的方法。
答案 0 :(得分:2)
答案 1 :(得分:0)
这可能适合你
public static List<Numbers> setNumbers()
{
List<Numbers> num = new List<Numbers>();
num.Add(new Numbers() { Column1 = 1, Column2 = 137 });
num.Add(new Numbers() { Column1 = 1, Column2 = 143 });
num.Add(new Numbers() { Column1 = 11, Column2 = 37 });
num.Add(new Numbers() { Column1 = 11, Column2 = 46 });
num.Add(new Numbers() { Column1 = 11, Column2 = 132 });
num.Add(new Numbers() { Column1 = 46, Column2 = 65 });
num.Add(new Numbers() { Column1 = 46, Column2 = 139 });
num.Add(new Numbers() { Column1 = 69, Column2 = 90 });
return num;
}
public static void group()
{
List<Numbers> numbers = setNumbers();
var grouppedNumbers = numbers
.GroupBy(x => x.Column1).ToList();
grouppedNumbers.AddRange(grouppedNumbers.FirstOrDefault(x => x.First().Column1.Equals(46)).Select(s => new Numbers() { Column1 = 11, Column2 = s.Column2 }).GroupBy(g => g.Column1).ToList());
grouppedNumbers.Remove(grouppedNumbers.FirstOrDefault(x => x.First().Column1.Equals(46)));
foreach (var groups in grouppedNumbers)
{
Console.WriteLine(groups.First().Column1);
foreach(var i in groups)
{
Console.WriteLine(i.Column1+" "+ i.Column2);
}
}
}