2016-06-17 2 views
0

У меня есть ICollection Actors в моих моделях. Актеры имеют имя param. Я хочу выбрать фильм с актером с выбранным именем. SearchActor строка в кнопке,поиск в объекте ICollection

namespace AEXSoft.Models 
{ 
    public class Movie 
    { 
    public int MovieID { get; set; } 
    public string Title { get; set; } 
    public string Date { get; set; } 
    public int Budget { get; set; } 
    public string Genre { get; set; } 
    public virtual ICollection<Actor> Actors { get; set; } 
} 

}

В контроллере Movie Я сделал запрос

if (!String.IsNullOrEmpty(SearchActor)) 
       { 
        Movie = Movie.Where(c => Actors.Name.Contains(c.Actors.SearchActor)); 
       } 
return View(Movie.ToList()); 

*

'ICollection' не содержит определения для 'Имя' и no метод расширения 'Name', принимающий первый аргумент типа 'ICollection «Может ли это правильно?

*

И та же задача, но searcging все актеры.

Movie=ctx.Movie.Where(s => s.Actors.Contains(SearchActor)).SelectMany(u => u.Actors).ToList(); 
+1

firsr запрос будет возвращать список фильмов, то есть. Список с выбранным актером (а не только одним) .. вы этого хотите? Второй - тот же, но с фильмами. Если вы хотите только один, используйте .FirstOrDefault() –

+0

Да, мне нужен список фильмов с выбранным персонажем. Это правда, но я думаю о другом вопросе, как можно запросить Iwrite для поиска определенного фильма с конкретным актером. – ifooi

+0

Я бы проверил мой код позже – ifooi

ответ

1

Вы хотите что-то подобное

var movieList = Movie.Where(c => c.Actors.Any(i => i.Name.Contains(SearchActor))).ToList() 
+0

Да. Оно работает. Но я читаю его {Movie = Movie.Where (c => c.Actors.Any (i => i.Name.Contains (SearchActor)));} return View (Movie.ToList()); – ifooi

1

Во-первых, вам нужно правильно использовать методы Ламба, как: .где (с => c.Actors ...) Во-вторых, здесь c.Actors.SearchActor Вы пытаетесь получить доступ к свойству SearchActor на List..there нет, очевидно.

Попробуйте вместо этого:

var SearchActor = "Arnold"; 

if (!String.IsNullOrEmpty(SearchActor)) 
{ 
    var allMovies = Movie.Where(m => m.Actors.Any(a => a.Name.Contains(SearchActor))).ToList(); 
} 
+0

Изобразительное. Я бы узнал. Благодаря! – ifooi

Смежные вопросы