Если имена через запятую, то разбивать нужно по запятой:
movies.Where(x => x.Actors.Split(',').Contains(movieActors));
С проверкой на пустоту:
movies.Where(x => !String.IsNullOrEmpty(x.Actors) && x.Actors.Split(',').Contains(movieActors));
Альтернативный вариант:
movies.Where
(
x =>
!String.IsNullOrEmpty(x.Actors) &&
x.Actors.Split(',').Any((actor) => actor.Equals(movieActors))
);
Еще один:
movies.Where(x => !String.IsNullOrEmpty(x.Actors) && x.Actors.Split(',').IndexOf(movieActors) != -1);
Если имена содержат пробелы, еще более ресурсоемкий запрос с удалением пробелов будет примерно таким:
movies.Where
(
x =>
!String.IsNullOrEmpty(x.Actors) &&
x.Actors.Split(',').Select(a => a.Trim()).Any((actor) => actor.Equals(movieActors))
);
При ошибке:
does not recognize the method 'System.String[] Split(Char[])'
вероятно придется получить данные (в массив):
movies.ToList().Where
(
x =>
!String.IsNullOrEmpty(x.Actors) &&
x.Actors.Split(',').Select(a => a.Trim()).Any((actor) => actor.Equals(movieActors))
);
Плохое решение, лучше структуру данных поменять, хранить актеров в нормальном виде, чтобы не приходилось их разбивать на массивы. Вариант поиска подстроки наиболее хорош в плане производительности:
movies = movies.Where(x => x.Actors.Contains(movieActors));