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”,我猜你也忘了提到那篇文章了。。。