防止项目在字符串LINQ中显示



我有一个基于产品分类的价格列表。我需要确保这些产品的价格在子类别没有显示在这个列表中,但他们是。子类别和类别在db中的同一个表中,唯一的区别是子类别将有一个父ID来显示它是子类别。

我有这两个LINQ语句,我需要以某种方式连接在一起,我不能得到它的权利。也许我没有尝试用正确的方式来做这件事,但我对LINQ还不是很有经验,而且我还没能在网上找到很多帮助。

要清楚,这不是为了删除重复,我没有那个问题,我只是需要防止一些结果显示。

var subCategories = siteCategory.SiteSubCategories.Where(x => x.Active);
string lowestPrice = siteCategory.SiteProducts.Min(x => x.Price).ToString();

我试着做以下事情string lowestPrice = sitecategorysiteproducts . where (!subCategories)。Min(x => x. price).ToString();但我得到一个错误,说Operator '!' cannot be applied to operand of type 'IEnumerable'

我还尝试过多种其他的linq语句组合,太多了,无法列出,所以我只列出我尝试过的对我最有意义的一个。

有人能帮我弄清楚我做错了什么吗?

应该使用带. where的lambda。这部分代码应该类似于

siteCategory.SiteProducts
    .Where(product => !subCategories.contains(product.Category))
    .Min(x => x.Price).ToString()

用适当的方式获取产品的类别。我猜是product.Category,你需要自己更新那块

我不知道你的数据是如何建模的细节,但假设Product具有Category属性。Category有一个ParentId可空属性,你可以这样做:

siteProducts
  .Where(product => product.Category.ParentId == null)
  .Min(product => product.Price)
  .ToString();

最新更新