使用Lambda StartsWith()检索所有记录
本文关键字:记录 检索 Lambda StartsWith 使用 | 更新日期: 2023-09-27 18:08:38
我有以下ActionResult和检索记录,以"query"参数的值开始。但是,当查询值为空或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);
}
有两个选择:
-
有条件地应用
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);