Замените значения в одном массиве, которые содержатся в другом, без перебора каждой отдельной записи

#c#

#c#

Вопрос:

Я создаю генератор плейлистов Spotify, очищая страницу исполнителей на веб-сайте фестиваля. Я могу вернуть все имена исполнителей, но некоторые из них не связаны с поисковым запросом Spotify, например:

 Festival Artist Name: "Slash and..."
Spotify Search Term:  "Slash"
  

Я создал объект с именем EdgeCases :

 public int EdgeCasesID { get; set; }
public int FestivalID { get; set; }
public string ComparableString { get; set; }
public string SearchTerm { get; set; }
public bool Skip { get; set; }
  

Он представляет все данные, необходимые для замены / пропуска / поиска этого исполнителя, который на самом деле не соответствует поисковому запросу Spotify.

Код, который у меня есть в настоящее время, сравнивает все крайние случаи со всеми исполнителями, извлеченными с веб-страницы; Я просто хочу помочь с тем, как сократить код сравнения

 foreach (string artist in artistNames)
{
    bool skipArtist = false;
    SearchItem searchItem = null;

    // Check if any of those artists exist in the UnfoundArtists database
    // More or less check if the name is different on Spotify or if they are even on Spotify
    foreach (EdgeCase unfoundArtist in EdgeCases)
    {
        // If the download artist page contains the a specific name 
        // e.g if 'slash amp; the conspirators' contains 'slash'
        if (artist.Trim().Contains(unfoundArtist.ComparableString)) 
        { 
            // If so, check if the artist is on Spotify
            if (unfoundArtist.ToSearch)
            {
                // search using SearchTerm
            }

            // This case is if the artist is on the page but not on Spotify
            skipArtist = true;
        }
        else
        {
            // Search the artist if there is no edge case - different Spotify 
            // name/on Spotify at all etc
            searchItem = _api.SearchItems(artist.Trim(), SearchType.Artist, limit: 1);
        }
    }
}
  

Комментарии:

1. нам нужно выйти из внутреннего цикла, если условие if возвращает true, верно?

2. Найдите исполнителя. Trim() из внутреннего цикла. Вы собираетесь вычислять это каждый раз, когда выполняется внутренний цикл, и значение никогда не изменится в этом цикле.

3. Честно говоря, это звучит как более подходящее для некоторых шаблонов регулярных выражений . Создайте несколько шаблонов reg ex, чтобы захватить все ваши крайние случаи и поместить их в правильный исполнитель.