如何检查“包含”在IEnumerable列表中

本文关键字:IEnumerable 列表 包含 何检查 检查 | 更新日期: 2023-09-27 18:15:55

bool NonEquijoin(Product product)
{
    var nonEquijoinQuery =
        from p in products
        let catIds = from c in categories
                     select c.ID
        where catIds.Contains(p.CategoryID) == true
        select new { Product = p.Name, CategoryID = p.CategoryID };
    if (nonEquijoinQuery.Contains(product))
    {
        true;
    }
    else
    {
        false;
    }
}

在两个不同的对象列表中,我必须找出一个列表中的项是否包含在另一个列表中,然后返回这些项。返回后,我必须检查givenItem是否存在于返回的列表中,然后返回true,否则返回false。

如何检查“包含”在IEnumerable列表中

bool NonEquijoin(Product product)
{
   return (from p in products
        let catIds = from c in categories
                     select c.ID
        where catIds.Contains(p.CategoryID)).Any(a =>a.Name == product.Name);
}

边注

catIds.Contains(p.CategoryID)返回类型为bool,因此不需要再次检查是否与bool相等。