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

时间:2020-09-16 00:12:40

标签: asp.net-core-3.1 entity-framework-core-3.1

我将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有解决方法?

1 个答案:

答案 0 :(得分:0)

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

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完成的。