Jac*_*ack 0 c# linq asp.net asp.net-mvc lambda
我具有以下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);
}
Run Code Online (Sandbox Code Playgroud)
好吧,有两个选择:
有条件地适用以下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);
Run Code Online (Sandbox Code Playgroud)将check放在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);
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1883 次 |
| 最近记录: |