模型的实体框架核心搜索字符串

问题描述

我将ASP.NET Core 3与Entity Framework Core一起使用。我在为其中一个模型实现搜索字符串时遇到问题。

我的控制器方法如下:

public async Task<IActionResult> IndexPartial(string? searchValue)
{
   IQueryable<Student> query = _context.Students;
   query = (searchString == null)? query : query.Where(s => s.FullName.Contains(searchValue));
   return PartialView(await query.ToListAsync());
}

我的模型类不在数据库中存储FullName,而仅在FirstNameLastName中存储

public class Student
{
    public int Id {get; set;}
    public string FirstName {get;set;}
    public string LastName {get;set;}

    public string FullName => FirstName+" "+LastName;
}

我是否必须过滤客户端表,还是使用LINQ有解决方法

解决方法

我找到了一个工作环境。 只需像这样更改控制器方法:

public async Task<IActionResult> IndexPartial(string? searchValue)
{
    IQueryable<Student> query = _context.Students;
    var list = await query.ToListAsync();
    list = (searchString == null)? list : list.FindAll(s => s.FullName.Contains(searchValue));
    return PartialView(await list);
}

我认为在修改IQueryable时,只能使用保存在由Entity Framework创建的数据库表中的模型属性,因为操作查询是通过SQL完成的。