如何使用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#中有没有一种方法可以将其简化为核心?

如何使用if语句最小化循环

使用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(); 

这将为您提供除匹配的IDsong.ID 之外的所有元素