2011-05-26 2 views
1

Я работаю над многогранным движком.nhibernate фильтровать список другим списком объектов

Я 2 типа класса:

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; } 
[...] 

Я список как класса.

  • Список < ResultProduct> содержит результаты моего поиска.
  • Список < Торговая марка> Список брендов.

Моя цель - удалить все Бренды, которых больше нет в ResultProduct. (с другими критериями).

Как я могу это сделать?

Edit:

Спасибо pektov за ваш ответ. Я хочу удалить все бренды, у которых нет продуктов.

Я нашел другое решение, которое работает.

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

Я думаю, что ваше решение приведет к повышению производительности, что вы думаете?

ответ

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 
+0

Я нашел другое решение, я редактировал вопрос. Какое решение лучше для вас? –

+0

Я не думаю, что должно быть какое-то существенное различие. –

Смежные вопросы