在我的示例中,我将搜索结果添加到一个列表时遇到问题。我必须在不同地点展示多名学生。我在.ToList()
声明中遇到foreach
问题。它只显示我在上一个位置的学生。
以下是我的代码:
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 :(得分:0)
问题可能是因为您不断更换Session["Students"]
和ViewBag.TotalNumberStudents
:
Session["Students"] = searched.ToDictionary(x => custIndex++, x => x);
ViewBag.TotalNumberStudents = searched.Count();
因此,只有最后的searched
通过了。
尝试累积结果,然后立即将其传递给Session["Students"]
和ViewBag.TotalNumberStudents
答案 1 :(得分:0)
您的代码中存在一些问题,custIndex
在循环内定义,Session变量在下一次迭代时覆盖,因此您只注意到会话中的最后seached
个结果
你可以这样做。
int custIndex =1;
Session["Students"] = Location.SelectMany(l=> db.Students.Contains(l))
.ToDictionary(x=>custIndex++, x=>x);
ViewBag.TotalNumberStudents = searched.Count();