在ASP.Net Core Web API中进行数据库查询过滤可以使用Entity Framework Core的LINQ查询语法。下面是一个包含代码示例的解决方法:
首先,确保已安装了Entity Framework Core和相关数据库提供程序的NuGet包。
创建一个数据模型(Model)类,该类映射到数据库中的表。例如,假设我们有一个名为"Product"的表,可以创建一个名为"Product"的数据模型类:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions options) : base(options)
{
}
public DbSet Products { get; set; }
}
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
// ...
}
确保在appsettings.json文件中设置了数据库连接字符串,例如:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=MyDatabase;Trusted_Connection=True;"
}
}
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private readonly AppDbContext _context;
public ProductsController(AppDbContext context)
{
_context = context;
}
[HttpGet]
public async Task>> GetProducts(string nameFilter)
{
IQueryable query = _context.Products;
if (!string.IsNullOrEmpty(nameFilter))
{
query = query.Where(p => p.Name.Contains(nameFilter));
}
return await query.ToListAsync();
}
}
在上述示例中,我们通过接收一个名为"nameFilter"的查询字符串参数来进行过滤。如果传入了"nameFilter"参数,则使用LINQ的Where方法对结果进行过滤。
GET /api/products?nameFilter=apple
返回的结果将只包含名称包含"apple"的产品。
注意:在实际应用中,请根据需要进行适当的错误处理和安全性验证。