Entity Framework 模型的核心搜索字符串

Entity Framework Core search string for model

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

我的模型class没有在数据库中存储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;
}

我是否必须过滤 table 客户端,或者是否有使用 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 创建的数据库 Table 中的模型属性,因为操作查询是通过 SQL 完成的.