我有以下代码:
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 :(得分:0)
不确定,但您是否尝试过使用Distinct()
?
类似于:
products.AddRange(entities.Products.Where(p => p.Tags.Contains(tag)).Distinct().ToList());
玩弄它。