我是 Linq 和 MVC 的新手,经过大量的搜索和学习才达到这一点。
我有以下成功接收参数“code”的方法。
public ActionResult GetIssueList(string code)
{
//dynamic fill of project code dropdown on selection of customer code drop down
ProjectManager pm = new ProjectManager();
var projectcodes = pm.SelectAllProjects();
var projects = new List<Project>();
foreach (var proj in projectcodes)
{
projects.Add(proj as Project);
}
return Json(projects.Where(x => x.CustomerCode == code).ToList());
}
正在从数据库中检索数据,但是where子句没有过滤掉等于参数的数据。
最佳答案
通过执行调试,确保项目肯定没有CustomerCode
的 code
.不过,我对你的问题是“项目代码中的项目是 Project
对象吗?如果不是,你不能将它们 as cast
到 Project
,而是必须使用该代码 new Projects
此外,您在上面编写的所有内容都可以很容易地重写为一行代码。 (你可能必须在 new Project(projectCode)
之前做一个 .ToList<Project>()
,但我不知道你的类型所以我不会假设)
public ActionResult GetIssueList(string code)
{
return Json(new ProjectManager()
.SelectAllProjects()
.Select(proj => proj as Project)
.Where(proj => proj.CustomerCode == code)
.ToList();
}
编辑:在上述方法的返回语句中放置一个断点,并在比较之前检查列表中的项目是否具有预期的 CustomerCode。
关于c# - 为什么这个 Linq Where 子句不过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23787472/