将对象列表中的字段组合为CSV

时间:2014-10-31 17:32:44

标签: c# linq

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;)并且因为没有任何匹配而被复制。

如果问题/解释混乱,我很抱歉。

1 个答案:

答案 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();

请注意idrollname必须为public