【发布时间】:2013-07-06 17:44:53
【问题描述】:
我有以下课程:
产品:
public class Product
{
public string Name { get; set; }
public List<Category> Categories { get; set; }
}
类别:
public class Category
{
public string Id { get; set; }
public string Name { get; set; }
}
我有以下方法:
public List<Product> FilterProducts(List<Category> categories)
{
// filtering code here
}
问题:如何使用List<Categories> 作为参数过滤我的产品?
编辑:我忘了提一件事,如果我有 2 个类别,我应该只能看到具有 category1 AND 的产品强> category2。到目前为止,我所做的只返回了 category1 或 category2 的产品。虽然继承 IEquatable 使用 Intersect 似乎很有趣,但我现在正在与 Id 进行比较。
【问题讨论】:
-
我会成为那个人......到目前为止你尝试了什么?
-
(来自 Products.Any(p => categories.Contains(p.Category) 中的产品)
-
刚刚编辑并仍在测试:)
-
如果您需要“仅查看类别 1 和类别 2 的产品”。那么你将需要我的第一个解决方案,它使用
All方法。以下是如何使用 Id 进行重写:return products.Where(p => categories.All(c => p.Categories.Any(cat => cat.Id == c.Id)).ToList()