EF LINQ多对一滤波器/哪里

时间:2012-10-10 17:41:19

标签: c# .net linq entity-framework linq-to-entities

我在下面调用GetProducts()方法时遇到异常。我本质上是试图通过指定国家/地区的可用内容过滤我的产品列表。产品和国家/地区之间存在一对多的关系设置。

    public static List<Product> GetProducts(Country country)
    {
        Context db = new Context();
        return db.Products.Where(m => m.Countries.Contains(country)).ToList<Product>();
    }
  

无法创建类型的常量值   'DataModels.Country'。只有原始类型或   在此上下文中支持枚举类型。

如果我没有以正确的方式解决这个问题,那么选择一个国家/地区过滤产品的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

您只能根据基本类型进行比较。

我会将其更改为使用Any方法。将ID替换为国家/地区实体密钥(或唯一属性)

db.Products.Where(m => m.Countries.Any(c => c.ID == country.ID)).ToList<Product>();