2010-12-31 2 views
0

У меня есть следующий код:Linq To Sql Фильтрация продуктов по тегам

var tagarray = tags.Split(','); 
var products = new List<Product>(); 
foreach(var tag in tagarray) 
{ 
    if (!String.IsNullOrEmpty(tag)) 
    { 
     products.AddRange(entities.Products.Where(p => p.Tags.Contains(tag)).ToList()); 
    } 
} 

, который делает работу - но добавит дублирующие продукты, если они соответствуют более одного тега. Как я могу переписать запрос linq, чтобы исключить продукты, которые уже есть в списке. Я попытался добавив в смесь:

private bool DoesProductAlreadyExist(List<Product> products, int id) 
{ 
    return products.Exists(x => x.Id == id); 
} 

, но я получаю исключение, по существу говоря, выражение LINQ не распознает метод. Было бы полезно оценить точку в правильном направлении.

ответ

0

Не уверен, но вы пробовали использовать Distinct()?

Аналогично:

products.AddRange(entities.Products.Where(p => p.Tags.Contains(tag)).Distinct().ToList()); 

поиграйте с ним.

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