0

我在使用 EF 时遇到了一些麻烦。在此模型中,我想获得名称与某个字符串匹配的所有产品的 IEnumerable,以及名称也与相同字符串匹配的订单中的产品,所有这些在结果 IEnumerable 中都没有重复的产品。

也就是说,搜索相同字符串并将其与产品名称和订单名称进行匹配并返回匹配产品的查询。

谢谢

      public class Order
        {
            public Order()
            {             
                OrderDetailList= new  List<OrderDetail>();
            }

            public int Id { get; set; }
            public String orderName{ get; set; }            
            public ICollection<OrderDetail> OrderDetailList{ get; set; }    
        }

 public class OrderDetail 
    {

        public int Id { get; set; }        

        [ForeignKey("Product_Id")]
        public Turno Product { get; set; }
        public int Product_Id { get; set; }

        public int numberOfItems{ get; set; }

        [ForeignKey("Order_Id")]      
        public Order Order { get; set; }
        public int Order_Id { get; set; }
   }



 public class Product 
    {
        public Product()
        {         
            OrderDetail= new List<OrderDetail>();
        }
        public int Id { get; set; }
        public string Name { get; set; }
        public string codId { get; set; }
        public ICollection<OrderDetail> OrderDetailList{ get; set; }
}



public class Context : DbContext
    {
        public Context()
            : base("Context") { }            
        public DbSet<Order> Orders { get; set; }
        public DbSet<OrderDetail> OrderDetails { get; set; }
        public DbSet<Product> Products { get; set; }
    }
4

2 回答 2

1

这就是我对您要查询的内容的描述的理解:

var products = context.Products
    .Where(p =>
        p.Name == "searchString" ||
        p.OrderDetailList.Any(od => od.Order.orderName == "searchString"))
    .ToList();
于 2013-10-16T19:22:01.213 回答
0

Include像这样在查询产品时使用

context.Product.Distinct().Include(o =>
OrderDetailList.Product.Where(p=>p.Name.Contains("string")).ToList();

我没有测试过这个例子,所以你可能需要稍微调整一下。但你明白我猜的意思。

于 2013-10-16T17:54:54.730 回答