如何在不使用LINQ Include或其他方式连接的情况下获取应在另一个表中检查的表数据?



我想获取包含在另一个表中但被列 ID 过滤的表的数据,该列 ID 与另一个表具有另一个实现

在下面我写了细节

产品表(仅写入需要的列(

 public partial class Products
{  
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public int GroupID { get; set; }
    public virtual ICollection<Product_Attribut> Product_Attribut { get; set; }
}

Attribute_Item

public partial class AttributItem
    {  
        public int AttributeID { get; set; }
        public int AttrGrpID { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Product_Attribut> Product_Attribut { get;set; }
}

Product_Attribut

public partial class Product_Attribut
{
    public int ID { get; set; }
    public Nullable<int> ProductID { get; set; }
    public Nullable<int> AttributeID { get; set; }
    public Nullable<bool> isChecked { get; set; }
    public string Value { get; set; }
    public virtual AttributItem AttributItem { get; set; }
    public virtual Products Products { get; set; }
}

表是乘积Attribute_Item,Product_Attribut Product_Attribut这两个表有 1:m 的关系,这意味着两个 1:m 的关系

现在我想获取产品数据表,其中Product_Atrribute应该有一行带有产品 ID 和属性 ID,其中属性 ID 按过滤器 ID 过滤

products = products.Include(pr => pr.Product_Attribut.Select(x => x.AttributeID == Convert.ToInt32(eachfilt[1])));

我使用了这段代码,但我知道这是错误的并得到错误,但不知道如何到达它? 我是否需要连接两个表,或者只有另一种简单的方法 只使用 Linq?

样本

product rows                    
product_id          
1                      
2                      
3                      
4
5
AttributItem rows
attribute_id 
11
12
13

现在Product_Attribut表中有这些行

product_id     attribute_id
1              11
2              11
2              12
3              12

当我将attribute_id过滤器设置为 11 时,我希望输出是只有产品 1 和 2 的产品表,而不是(3,4 和 5(

这是您获取表数据并在另一个表上对此表具有一对多关系进行过滤的方式,结果和输出只是您想要获得的产品表和数据

 var products = db.Products.Include(p => p.Product_Groups);
 products = products.Include(p => p.Product_Attribut).Where(x => x.Product_Attribut.Any(p => p.AttributeID == filter));

你可以检查下面的代码来获取这个东西。 您有一对多的关系,因此我们可以Product_Attribut属性借助 linq where 子句过滤数据,然后使用匿名函数或示例中存在的类选择用户想要的内容。

Products product = new Products();
        Product_Attribut attribute = new Product_Attribut();
        attribute.ProductID = 1;
        attribute.AttributeID = 11;

        Product_Attribut attribute1 = new Product_Attribut();
        attribute1.ProductID = 2;
        attribute1.AttributeID = 11;
        Product_Attribut attribute2 = new Product_Attribut();
        attribute2.ProductID = 2;
        attribute2.AttributeID = 12;
        Product_Attribut attribute3 = new Product_Attribut();
        attribute3.ProductID = 3;
        attribute3.AttributeID = 12;
        Product_Attribut attribute4 = new Product_Attribut();
        attribute4.ProductID = 4;
        attribute4.AttributeID = 14;
        product.Product_Attribut = new List<Product_Attribut>();
        product.Product_Attribut.Add(attribute);
        product.Product_Attribut.Add(attribute1);
        product.Product_Attribut.Add(attribute2);
        product.Product_Attribut.Add(attribute3);
        product.Product_Attribut.Add(attribute4);
        var filter = product.Product_Attribut.Where(x => x.AttributeID == 11).Select(x => new Product_Attribut
        {
            ProductID = x.ProductID,
            AttributeID = x.AttributeID
        }).ToList();

最新更新