使用搜索参数列表查找值

时间:2016-04-15 07:21:07

标签: c# linq

在我的示例中,我将搜索结果添加到一个列表时遇到问题。我必须在不同地点展示多名学生。我在.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();
    }
}

2 个答案:

答案 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();