防止项目出现在字符串LINQ中

时间:2016-09-02 14:50:00

标签: c# sql linq

我有一份基于类别产品的价格清单。我需要确保子类别中的产品价格不会显示在此列表中,但它们是。子类别和类别在数据库的同一个表中,唯一的区别是子类别将有一个父ID来表明它是一个孩子。

我有两个LINQ语句,我需要以某种方式联系在一起,我无法做到正确。也许我没有尝试以正确的方式做到这一点,但我对LINQ还不是很有经验,而且我还没有能够在网上找到很多帮助。

要明确的是,这不是为了删除重复项,我不会遇到这个问题,我只需要阻止某些结果出现。

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

我试图做以下事情     string lowestPrice = siteCategory.SiteProducts.Where(!subCategories).Min(x => x.Price).ToString(); 但是我收到一条错误Operator '!' cannot be applied to operand of type 'IEnumerable'

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

有人可以帮我弄清楚我做错了什么吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

你应该在.Where使用lambda。代码的那部分应该像

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

以适当的方式获取产品类别。我猜到product.Category,你需要自己更新那篇文章。

答案 1 :(得分:0)

我不知道您的数据建模方式的详细信息,但假设Product具有Category属性。并且Category具有ParentId可空属性,您可以这样做:

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