Как динамически добавить оператор OR в предложение WHERE в LINQ

У меня есть массив строк переменного размера, и я пытаюсь программно перебрать массив и сопоставить все строки в таблице, где столбец «Теги» содержит хотя бы одну из строк в массиве. Вот некоторый псевдокод:

 IQueryable<Songs> allSongMatches = musicDb.Songs; // all rows in the table

Я легко могу запросить эту фильтрацию таблиц по фиксированному набору строк, например так:

 allSongMatches=allSongMatches.Where(SongsVar => SongsVar.Tags.Contains("foo1") || SongsVar.Tags.Contains("foo2") || SongsVar.Tags.Contains("foo3"));

Однако это не работает (я получаю следующую ошибку: «Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений»)

 allSongMatches = allSongMatches.Where(SongsVar =>
     {
       bool retVal = false;
       foreach(string str in strArray)
       {
         retVal = retVal || SongsVar.Tags.Contains(str);
       }
       return retVal;
     });

Кто-нибудь может показать мне правильную стратегию для достижения этой цели? Я все еще новичок в мире LINQ :-)

Ответы на вопрос(4)

Ваш ответ на вопрос