У меня есть массив строк с переменным размером, и я пытаюсь запрограммировать цикл по массиву и сопоставлять все строки в таблице, где столбец "Метки" содержит по крайней мере одну из строк в массиве. Вот несколько псевдокодов:
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: -)