2016-04-15 6 views
-1

In meinem Beispiel habe ich Probleme, meine Suchergebnisse zu einer Liste hinzuzufügen. Ich muss mehrere Schüler zeigen, die an verschiedenen Orten sind. Ich habe Probleme mit .ToList() in foreach Aussage. Es zeigt nur meine Schüler vom letzten Ort an.Suchen von Werten mit einer Liste von Suchparametern

Unten ist mein Code:

public void Search(IEnumerable<string> Location) 
{ 
    Location.ToList(); 

    foreach (var l in Location) 
    { 
     var students = from s in db.Students 
         select s;     

      students = students.Where(s => s.City.Contains(l)); 

     var searched = students.ToList(); 
     int custIndex = 1; 
     Session["Students"] = searched.ToDictionary(x => custIndex++, x => x); 
     ViewBag.TotalNumberStudents = searched.Count(); 
    } 
} 
+0

Wie zeigen Sie die Schüler an? Was passierst du zu deinem 'View'? – Ian

+0

in der Zeile 'Session [" Students "] = gesucht ...' Sie weisen in jeder Iteration (für jeden Ort) ein _new_ Dictionary zu. Sie müssen diese Wörterbücher kombinieren. –

+0

Vielen Dank alle, wie ich verstehe, muss ich die Variable vor foreach Schleife zu deklarieren, und verwenden Sie Session ["Studenten"] und Viewbag außerhalb von foreach. Aber dann kann ich students.toList() nicht erreichen. Irgendwelche Vorschläge? –

Antwort

0

Das Problem wahrscheinlich verursacht, weil Sie es nicht ersetzen Ihre Session["Students"] und ViewBag.TotalNumberStudents:

Session["Students"] = searched.ToDictionary(x => custIndex++, x => x); 
ViewBag.TotalNumberStudents = searched.Count(); 

Daher wird nur der letzte searched am Ende geführt wurde.

Versuchen Sie, das Ergebnis zu sammeln, so dass sie dann auf einmal passieren zu Session["Students"] und ViewBag.TotalNumberStudents

0

Es gibt einige Probleme in Ihrem Code, custIndex innerhalb der Schleife und Session-Variablen definiert ist überschreibt durch nächste Iteration, damit Sie feststellen, Nur letzte seached Ergebnisse in der Sitzung.

Sie könnten dies tun.

int custIndex =1; 
Session["Students"] = Location.SelectMany(l=> db.Students.Contains(l)) 
           .ToDictionary(x=>custIndex++, x=>x); 

ViewBag.TotalNumberStudents = searched.Count(); 
Verwandte Themen