2015-05-28 3 views
0

Я пишу программу на C#, которая касается песен. У меня есть класс Song и класс SongCollection, который наследует список типа Song. Мне нужно написать метод, который принимает в качестве параметра исполнителя (строку), и мне нужно вернуть новый SongCollection этого исполнителя. Мне трудно получить доступ к списку песен.C# list inheritance

public SongCollection GetAllByArtist(string artist) 
{ 
     SongCollection newSongs = new SongCollection(); 
     if (this.Artist == artist) 
     { 
      newSongs.Add(this.Song); 
     } 
     return newSongs; 
} 
+0

Где Этот метод? (что такое 'this'?) – Sayse

ответ

0

Вам нужно перебрать коллекцию и сделать чек художника на каждой песне, а не на сам список:

public SongCollection GetAllByArtist(string artist) 
{ 
     SongCollection newSongs = new SongCollection(); 
     foreach (Song s in this) { 
      if (s.Artist == artist) 
      { 
       newSongs.Add(s); 
      } 
     } 
     return newSongs; 
} 
+0

ПРИМЕЧАНИЕ. Предполагается, что класс SongCollection реализует итератор, отображающий внутреннюю коллекцию объектов Song. (Не говорю, что это неправильно, просто сделайте заметку) – Kevin

+1

Я интерпретировал описание OP («класс SongCollection, наследующий список типа Song») в качестве утверждения, что его класс наследует List . – adv12

5

Это должно работать для вас:

public SongCollection GetAllByArtist(string artist) 
{ 
    SongCollection newSongs = new SongCollection(); 
    newSongs.AddRange(this.Where(p=>p.Artist == artist))   
    return newSongs; 
}