使用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);
}

使用Lambda StartsWith()检索所有记录

有两个选择:

  • 有条件地应用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);