Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在单个LINQ语句中查询多个数据库集_C#_Entity Framework_Lambda_Dbset - Fatal编程技术网

C# 如何在单个LINQ语句中查询多个数据库集

C# 如何在单个LINQ语句中查询多个数据库集,c#,entity-framework,lambda,dbset,C#,Entity Framework,Lambda,Dbset,我在EF上遇到了一些麻烦。 在这个模型中,我希望得到名称与某个字符串匹配的所有产品的IEnumerable,以及名称与同一字符串匹配的订单中的产品,所有这些在生成的IEnumerable中都没有重复的产品 也就是说,查询将搜索同一字符串,并将其与产品名称和订单名称进行匹配,然后返回匹配的产品 谢谢 public class Order { public Order() {

我在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; }
    }
公共类秩序
{
公共秩序()
{             
OrderDetailList=新列表();
}
公共int Id{get;set;}
公共字符串orderName{get;set;}
公共ICollection OrderDetailList{get;set;}
}
公共类OrderDetail
{
公共int Id{get;set;}
[外键(“产品Id”)]
公共Turno乘积{get;set;}
公共int乘积_Id{get;set;}
public int numberOfItems{get;set;}
[外键(“订单Id”)]
公共秩序{get;set;}
公共整数顺序_Id{get;set;}
}
公共类产品
{
公共产品()
{         
OrderDetail=新列表();
}
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串codId{get;set;}
公共ICollection OrderDetailList{get;set;}
}
公共类上下文:DbContext
{
公共上下文()
:base(“Context”){}
公共数据库集命令{get;set;}
公共DbSet OrderDetails{get;set;}
公共数据库集产品{get;set;}
}

像这样查询产品时使用
包括

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

我还没有测试过这个示例,所以您可能需要对它进行一些调整。但是你明白我的意思。

这就是我如何理解你想要查询的内容的描述:

var products = context.Products
    .Where(p =>
        p.Name == "searchString" ||
        p.OrderDetailList.Any(od => od.Order.orderName == "searchString"))
    .ToList();

您的答案仅与订单中包含的产品名称匹配,但与订单中未包含的产品名称或订单名称均不匹配。