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,&#34; steven,christy和# 34;)并且因为没有任何匹配而被复制。
如果问题/解释混乱,我很抱歉。
答案 0 :(得分:4)
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
。