nhibernate使用另一个对象列表过滤列表

时间:2011-05-26 13:35:26

标签: nhibernate linq-to-objects linq-to-nhibernate

我正在开发一个多方面的引擎。

我有两种类型:

ResultProduct
public int Id { get; set; }
public int Name { get; set; }
public int Brand { get; set; }
[...]

Brand
public int Id { get; set; }
public int Name { get; set; }
public IList<Product> Product { get; set; }
[...]

我有一个班级列表。

  • 列表&lt; ResultProduct&gt;包含我的搜索结果。
  • 列表&lt;品牌&gt;包含品牌列表。

我的目标是删除ResultProduct中不再包含的所有品牌。 (与其他标准一起)。

我该怎么做?

修改:

感谢pektov的回答。 我想删除所有没有产品的品牌。

我找到了另一个有效的解决方案。

brands = (from brand in brands
  where (from res in resultSearch select res.Brand.IdBrand).Contains(brand.IdBrand)
  select brand).ToList<Brand>();

我认为您的解决方案会带来更好的性能,您怎么看?

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解这个问题,我假设您要删除品牌列表中的所有商品,因为没有考虑品牌产品列表的resultProducts中没有该品牌的商品班级

如果是这种情况,您可以像这样使用RemoveAll方法:

List<ResultProducts> products;
List<Brands> brands;

brands.RemoveAll(x=> !products.Exists(y=>y.brand == x.Id)); //returns only brands that don't appear in the  products list