C# 设置列表数据合并列的格式

C# 设置列表数据合并列的格式,c#,linq,C#,Linq,例如,如何使用LINQ和按GroupId对以下记录进行分组(从而将每组中的所有行合并为一行) 请让我知道如何使用分隔逗号添加这些值。不添加这些值预期结果是: 需要输出: Id|Name | Father | Number |G-48=/de/sup/sur|L-48/49=de/sup/sur|Uday=de/sup/sur 1 |Farmer1 | FFather1| 9876543210|200,200,150 |150,150,150 |400,400,3

例如,如何使用LINQ和按GroupId对以下记录进行分组(从而将每组中的所有行合并为一行)

请让我知道如何使用分隔逗号添加这些值。不添加这些值预期结果是: 需要输出:

Id|Name    | Father  | Number    |G-48=/de/sup/sur|L-48/49=de/sup/sur|Uday=de/sup/sur
1 |Farmer1 | FFather1| 9876543210|200,200,150     |150,150,150       |400,400,300
3 |Farmer23| FFather3| 9876543210|1212/1212/1210  |2121/2121/2000    |null
请帮助让我知道如何合并此预期结果

我已经试过了,但还没有弄清楚

var data = result.GroupBy(i => i.id).Select(g => new
                {
                    Id= g.Key,
                    FarmerName = g.Select(i => i.FarmerName ).FirstOrDefault(),
                    FatherName = g.Select(i => i.FatherName ).FirstOrDefault(),
                    Number= g.Select(i => i.Number).FirstOrDefault(),
                    Demand = String.Join(",", g.Select(i => i.Demand)),
                    Supply= String.Join(",", g.Select(i => i.Supply)),
                    Survival= String.Join(",", g.Select(i => i.NoOfPlantSurviving)),
                }).ToList();

看一眼就知道了。你有什么问题?例如,您得到了什么输出…我需要根据“clone”和concat last this columnsAh创建column name,我明白了,所以您的列的数量是可变的,这取决于有多少行具有相同的ID?你最终用它做什么?您是否将它传递给某个可以循环通过分组行来获取数据的对象,而不是让它为每一个旧行使用一个列,这让我觉得很难做到?我当然想不出一个办法在林克做到这一点。也许还值得编辑您的问题以强调这一要求——当我第一次看到它时,我没有注意到,并假设您正在进行分组和聚合。
var data = result.GroupBy(i => i.id).Select(g => new
                {
                    Id= g.Key,
                    FarmerName = g.Select(i => i.FarmerName ).FirstOrDefault(),
                    FatherName = g.Select(i => i.FatherName ).FirstOrDefault(),
                    Number= g.Select(i => i.Number).FirstOrDefault(),
                    Demand = String.Join(",", g.Select(i => i.Demand)),
                    Supply= String.Join(",", g.Select(i => i.Supply)),
                    Survival= String.Join(",", g.Select(i => i.NoOfPlantSurviving)),
                }).ToList();