我正在一个显示产品列表的屏幕上工作,但是当用户单击不同的复选框时,我在操作参数中获得了选中复选框的值。这是我的屏幕。
现在我想在不同的项目选择上动态请求查询。
public async Task<IEnumerable<Product>> GetSpecificProducts
(List<int> brands, List<int> categories, List<int> sugar)
{
var products = await _context.Products
.Where(x => x.BrandId == ???)
.Where(x => x.CategoryId == ???)
.Where(x => x.Sugar == ???)
.ToListAsync();
}`
我已经查看了一些 stackoverflow 问题,但我只是在像here这样的单个值的情况下得到结果。如何在多个 where 子句上生成动态 linq。
您只需要检查每个集合是否为空,然后再将其包含为查询的过滤器,如下所示:
public async Task<IEnumerable<Product>> GetSpecificProducts
(List<int> brands, List<int> categories, bool? sugar)
{
IQueryable<Product> query = _context.Products;
if(brands != null && brands.Any())
query = query.Where(x => brands.Contains(x.BrandId));
if(categories != null && categories.Any())
query = query.Where(x => categories.Contains(x.CategoryId));
if(sugar.HasValue)
query = query.Where(x => x.Sugar == sugar);
var products = await query.ToListAsync();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句