C# LINQ group by并合并为CSV

C# LINQ group by并合并为CSV,c#,linq,C#,Linq,这就是我所拥有的 ID Value 1 Val1 1 Val2 3 Val3 3 Val4 4 Val5 我需要 ID Value 1 Val1, Val2 3 Val3, Val4 5 Val4 我被困在这一点上: var groups = Result.GroupBy(res => res.ID); foreach (var group in groups) {

这就是我所拥有的

ID Value
1  Val1
1  Val2
3  Val3   
3  Val4
4  Val5
我需要

ID Value
1  Val1, Val2
3  Val3, Val4
5  Val4
我被困在这一点上:

      var groups = Result.GroupBy(res => res.ID);      
      foreach (var group in groups)
      {                       
        foreach (var entry in group)
        {

        }
       }
如何将结果转换为新的匿名类型

注意,我还需要一个可以序列化的具体类型

编辑:最终的解决方案是

[Serializable]   
public class KeyValueCSV 
{
    public decimal Key { get;set;}
    public string CSVValues { get;set;}
}

List<KeyValueCSV> kvCSVList = new List<KeyValueCSV>();
KeyValueCSV kvCSV;

          var groups = Result.GroupBy(res => res.ID);      
          foreach (var group in groups)
          {  kvCSV = new KeyValueCSV();  
            foreach (var entry in group)
            {
               kvCSV.id = entry.id;
               kv.CSVValues = enrty.Value + ", ";
            }
           kvCSVList.Add(kvCSV);
           }
[可序列化]
公共类KeyValueCSV
{
公共十进制密钥{get;set;}
公共字符串CSV值{get;set;}
}
List kvCSVList=新列表();
KeyValueCSV-kvCSV;
var groups=Result.GroupBy(res=>res.ID);
foreach(组中的var组)
{kvCSV=new KeyValueCSV();
foreach(组中的var条目)
{
kvCSV.id=entry.id;
kv.CSV值=自然值+“,”;
}
kvCSVList.Add(kvCSV);
}

团队拥有您所需的一切

[Serializable]   
public class KeyValueCSV 
{
    public string Key { get;set;}
    public List<string> CSVValues { get;set;}
}

 var groups = 
       Result.GroupBy(res => res.ID)
       .Select(x => new KeyValueCSV() { 
            Key=x.key, 
            CSVValues= string.Join(",", x.ToList()) 
           }
       );

**如果我把事情搞砸了,请告诉我;)我最近在python世界里,所以我可能已经设法混合了一些sytax…

Group拥有您所需要的一切

[Serializable]   
public class KeyValueCSV 
{
    public string Key { get;set;}
    public List<string> CSVValues { get;set;}
}

 var groups = 
       Result.GroupBy(res => res.ID)
       .Select(x => new KeyValueCSV() { 
            Key=x.key, 
            CSVValues= string.Join(",", x.ToList()) 
           }
       );

**如果我把事情搞砸了,请告诉我;)我最近接触过python,所以我可能已经设法混合了一些sytax…

如果您正在使用Linq to对象,您可以这样做

from res in Result
group res by res.ID into grouping
select new
{
 ID = grouping.Key,
 Values = grouping.Select(r => r.Value).Aggregate((a,b) => a + ", " + b)
}

如果您正在对对象执行Linq,则可以执行此操作

from res in Result
group res by res.ID into grouping
select new
{
 ID = grouping.Key,
 Values = grouping.Select(r => r.Value).Aggregate((a,b) => a + ", " + b)
}

我需要一个可以序列化的具体对象。Console.WriteLine没有帮助。那么将其放入匿名类型也不会有帮助。你需要解释一下你想要最后的东西是什么样子。现在我只是给了你你想要的。。。。一个匿名类型的分组。似乎CSVValues是{ID=1,Value=Val1},{ID=2,Value=Val2},第二个查询“r”未定义。我需要一个可以序列化的具体对象。Console.WriteLine没有帮助。那么将其放入匿名类型也不会有帮助。你需要解释一下你想要最后的东西是什么样子。现在我只是给了你你想要的。。。。一个匿名类型的分组。看起来CSVValues是{ID=1,Value=Val1},{ID=2,Value=Val2},第二个查询'r'没有定义。所以一些指导,你不需要匿名类型,你只需要把它放入一个可序列化的类型,为什么你的问题名为“LINQ group by and combine as CSV”,我猜你也忘了提到那篇文章了……所以一些指导,你不需要匿名类型,你只需要将它转换成可序列化的类型,为什么你的问题题为“LINQ group by and combine as CSV”,我猜你也忘了提到那篇文章了。。。