Прежде всего, я полагаю, что ваш класс является общедоступным, и все ваши приватные строковые поля (как видно из примера кода) в действительности являются публичными свойствами (скажите, если я ошибаюсь!).Итак, ваш класс выглядит примерно так:
public class Player
{
public string FirstName{get; set;}
public string SurName{get; set;}
public string Group{get; set;}
}
И содержание похоже на:
public static ObservableCollection<Player> collection = new ObservableCollection<Player>
{ new Player{FirstName ="Alexander", SurName="Davidof", Group = "Football"},
new Player{FirstName ="Alexander", SurName="Davidof", Group = "Baseball"},
new Player{FirstName ="Alexander", SurName="Medvedev" , Group = "Karate"},
new Player{FirstName ="Alexander", SurName="Medvedev", Group = "Polo"}};
Используйте LINQ для группировки ваших записей по именам игроков и String.Join () для объединенияих в строку синглов
var pl = from player in collection
group player by new { First = player.FirstName, Second = player.SurName } into gr
select String.Format("{0} {1} : {2}", gr.Key.First, gr.Key.Second, String.Join(",", gr.Select( a=> a.Group)));
Если вы напечатаете этот массив
pl.ToList().ForEach(a => Console.WriteLine(a));
, вы увидите что-то вроде:
Alexander Davidof : Football,Baseball
Alexander Medvedev : Karate,Polo