2016-06-17 6 views
0

Ich habe ICollection Actors in meinen Modellen. Schauspieler haben Name param. Ich möchte Film mit Schauspieler mit gewähltem Namen auswählen. SearchActor Zeichenfolge in Schaltfläche,Suche in ICollection Einheit

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; } 
} 

}

In Movie-Controller Ich habe Abfrage

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

*

'ICollection' enthält keine Definition für 'Name' und nein Erweiterungsmethode 'Name' akzeptiert ein erstes Argument vom Typ 'ICollection "Könnte das stimmen?

*

Und gleiche Aufgabe, aber searcging alle Schauspieler.

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

Die firsr Abfrage kehrt Liste der Filme, dh. Liste mit ausgewählten Schauspieler (und nicht nur einzelne) .. willst du das? Die zweite ist die gleiche, aber mit Filmen..wenn Sie nur einzelne wollen, verwenden .FirstOrDefault() –

+0

Ja, ich möchte Liste der Filme mit ausgewählten Schauspieler. Das ist wahr, aber ich denke über eine andere Frage nach, wie kann ich Abfrage schreiben, um bestimmte Filme mit bestimmten Akteuren zu suchen. – ifooi

+0

Ich würde meinen Code später testen – ifooi

Antwort

1

Sie wollen so etwas wie das

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

Ja. Es klappt. Aber ich chage es zu {Movie = Movie.Where (c => c.Actors.Any (i => i.Name.Contains (SearchActor)));} return View (Movie.ToList()); – ifooi

1

Zuerst müssen Sie richtig lamba Methoden wie verwenden: .Where (c => c.Actors ...) Zweitens, hier c.Actors.SearchActor Sie versuchen, auf die Eigenschaft SearchActor auf List..there ist keine offensichtlich.

Versuchen Sie stattdessen:

var SearchActor = "Arnold"; 

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

Fein. Ich würde lernen. Vielen Dank! – ifooi