2015-05-28 67 views
0

我在寫一個處理歌曲的C#程序。我有一個Song類和一個繼承宋類型列表的SongCollection類。我需要編寫一個以藝術家(字符串)作爲參數的方法,並且我需要返回該藝術家的新SongCollection。我在訪問歌曲列表時遇到了一些困難。C#列表繼承

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

在哪裏這種方法? (這是什麼?) – 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的描述解釋爲一個聲明,他的類繼承了List 。 – adv12

5

這應該爲你工作:

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