我有以下ActionResult并检索以" query"开头的记录参数的值。但是,当quesry值为空或null时,方法返回没有记录,而我想要检索所有这些。那么,我是否必须使用if子句并创建不同的lambda子句,或者是否可以使用StartsWith检查查询参数并检索所有记录?
public ActionResult StudentLookup(string query)
{
var students = repository.Students.Select(m => new StudentViewModel
{
Id = m.Id,
Name = m.Name
})
.Where(m => m.Name.StartsWith(query));
return Json(students, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:4)
嗯,有两个选择:
有条件地应用Where
子句:
IQuerable<StudentModel> students = repository.Students.Select(m => new StudentViewModel
{
Id = m.Id,
Name = m.Name
});
if (!string.IsNullOrEmpty(query))
{
students= students.Where(m => m.Name.StartsWith(query));
}
return Json(students, JsonRequestBehavior.AllowGet);
将检查放入Where
子句本身:
var students = repository.Students.Select(m => new StudentViewModel
{
Id = m.Id,
Name = m.Name
})
.Where(m => string.IsNullOrEmpty(query) || m.Name.StartsWith(query));
return Json(students, JsonRequestBehavior.AllowGet);