Linq加入列表和表格

时间:2017-12-04 06:01:52

标签: c# linq entity-framework-core

我有List<string> of ProductTypes,例如Vegetables, Dairy, Meat  我从Asp.Net Core中的查询字符串中收到。

在数据库中,有一个Product表,其中包含ProductType列,该列在文本字段中包含每个产品的类型)

我想从Product数据库表中选择ProductTypes列表中收到的所有产品。我这样做了:

var Result =  (from p in _context.Product
             join t in ProductTypes on p.ProductType equals t  select p).ToList();

我上面的努力有一个(不正确的)空结果,除非只传递了一个ProductType,在这种情况下它可以正常工作。

如果传递了多个ProductType,我如何才能完成正确的结果集?

1 个答案:

答案 0 :(得分:2)

您可以使用Contains代替联接:

var result =
    from p in _context.Product
    where ProductTypes.Contains(p.ProductType)
    select p;

您很少需要LINQ中的连接,并且在您拥有内存列表和数据库表的特殊情况下,Contains是可行的方法。