2014-10-31 2 views
-1

LINQ новичок вопрос.Объединение полей из списка объектов в CSV

Я хотел бы объединить поля в список, разделенный запятыми, когда другие же в списке объектов. Не уверен, правильно ли поставил вопрос.

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); 

    } 

С Ид и рулоном а2 и а5 такие же, (12, 27), при создании нового списка объектов, я хотел бы, чтобы один из его полей, как (12, 27, «стивен, Christy ») и остальное просто скопировано, так как не было никакого совпадения.

Прошу прощения, если вопрос/описание есть путаница.

+0

В классе 'A' у вас есть только поля не свойства: P – py3r3str

+1

вы застряли в реализации у вас есть« A »? Мне кажется, что «имя» должно быть «List names', так как у вас может быть более одного –

+0

@ py3r3str Ой, извините! Отредактировано: –

ответ

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.

Смежные вопросы