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
,只有FirstName
和LastName
。
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 完成的.
我使用 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
,只有FirstName
和LastName
。
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 完成的.