如何检查"包含"在IEnumerable列表中?

时间:2013-05-30 05:06:42

标签: c# linq

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。

1 个答案:

答案 0 :(得分:2)

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检查相等性。