如何使用if语句最小化循环
本文关键字:最小化 循环 语句 if 何使用 | 更新日期: 2023-09-27 18:23:43
我正在尝试最小化这段代码
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#中有没有一种方法可以将其简化为核心?

使用LINQ
favorites.RemoveAll(s => SongSerializer.Deserialize(s).ID == song.ID)
Btw。您的代码根本不应该工作,因为您不能在List的迭代过程中修改它。
您可以使用linq Where()来过滤它们:
List<string> result = favorites.Where(x=>SongSerializer.Deserialize(x).ID != song.ID).ToList();
这将为您提供除匹配的ID和song.ID 之外的所有元素