我正在尝试最小化这段代码
public static void UnfavSong(Song song)
{
List<string> favorites = FileManagement.GetFileContent_List(FAVS_FILENAME);
foreach (string s in favorites)
{
Song deser = SongSerializer.Deserialize(s);
if (deser.ID == song.ID)
{
favorites.Remove(s);
break;
}
}
FileManagement.SaveFile(FAVS_FILENAME, favorites);
}
但我觉得整个foreach
部分可以缩短得多。
在C#中是否有办法将其削减到核心?
答案 0 :(得分:3)
使用LINQ
favorites.RemoveAll(s => SongSerializer.Deserialize(s).ID == song.ID)
顺便说一下。您的代码根本不起作用,因为您无法在迭代期间修改List
答案 1 :(得分:2)
您可以使用linq Where()
来过滤它们:
List<string> result = favorites.Where(x=>SongSerializer.Deserialize(x).ID != song.ID).ToList();
除了匹配ID
与song.ID