【发布时间】:2017-05-23 02:37:29
【问题描述】:
我有这两个模型(多对多关系):
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
#region Navigation properties
public List<Category> Categories { get; set; }
#endregion
}
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
#region Navigation properties
public List<Product> Products { get; set; }
#endregion
}
那我有这个动作方法:
[HttpPost]
public async Task<ActionResult> FilterProducts(List<int> categoryIds)
{
var productsViewModel = new ProductsViewModel();
if (categoryIds != null)
{
var products = await db.Products
.AsNoTracking()
.Where(??????????????????????)
.Where(p => p.Visible == true)
.OrderBy(p => p.Importance)
.ToListAsync();
productsViewModel.Products = products;
}
else { // Do something else }
return PartialView("_ProductsPartial", productsViewModel);
}
我想做的是使用 LINQ(.Where(??????))通过categoryIds 获取所有产品。所以每个产品都有一个类别列表。我只想获取包含categoryIds 的产品。
不太确定如何构造 LINQ 查询,因为过滤是在子集合上完成的。有什么想法吗?
【问题讨论】:
-
那么你需要得到哪些品类相同的产品?或者至少有一个 categoryIds 的类别?
-
至少一个类别。
-
我会采取另一条路线并获取指定类别的产品。换句话说,查询类别及其产品。
-
其实我想我会需要这两种情况。至少一个类别。以及拥有所有类别的产品。