将对象列表中的字段合并为CSV
本文关键字:合并 CSV 字段 对象 列表 | 更新日期: 2023-09-27 18:28:42
LINQ新手问题。
当对象列表中的其他字段相同时,我希望将字段组合成逗号分隔的列表。不确定我是否答对了问题。
class A
{
int id;
int roll;
string name;
public A(int id, int roll, string name)
{
this.id = id;
this.roll = roll;
this.name = name;
}
}
class Program
{
static void Main(string[] args)
{
List<A> aList = new List<A>();
A a1 = new A(24, 501, "alex");
A a2 = new A(12, 27, "steven");
A a3 = new A(24, 67, "bob");
A a4 = new A(1, 90, "erin");
A a5 = new A(12, 27, "christy");
aList.Add(a1);
aList.Add(a2);
aList.Add(a3);
aList.Add(a4);
aList.Add(a5);
}
由于a2和a5的id和roll是相同的(12,27),在创建一个新的对象列表时,我希望将其中一个字段作为(12,27%,"steven,christy"),其余字段只是复制,因为没有任何匹配。
如果问题/解释有误,我很抱歉。
var res = aList
.GroupBy(z => new { z.id, z.roll })
.Select(z => new A(z.Key.id, z.Key.roll, string.Join(",", z.Select(z2 => z2.name))))
.ToList();
请注意,id
、roll
和name
必须是public
。