我有两个表DefaultAttributes和CustomAttributes。

DefaultAttributeTable:
1. Id
2. Product
4. Description

CustomAtrributeTable:
1. Id
2. DefaultAttributeMappingId(FK from DefaultAttributeTable)
3. CustomAtrributeName
4. CustomeAttributeValue

用户进行的输入:
  • 用户更新值产品->蔬菜,说明->家居用品,IsOrganic(创建自定义属性)-> True和IsDisposable(创建自定义属性)-> True
  • 用户更新值产品->水果,说明->家居用品,IsOrganic(创建自定义属性)-> True和IsDisposable(创建自定义属性)-> True
  • 用户更新值产品->塑料,说明->家居用品,IsOrganic(创建自定义属性)-> False和IsDisposable(创建自定义属性)->假

  • 然后值将在表中更新

    DeafaultAtrributeTable:

    sql - 根据另一个表中的自定义属性过滤值-LMLPHP

    CustomAttributeTable:
    sql - 根据另一个表中的自定义属性过滤值-LMLPHP

    我想合并两个表,然后选择Id,产品,IsOrganic,IsDisposable,然后根据isorganic列过滤值。此外,自定义属性列名称也应采用CustomAtrributeTable。请向我建议如何在SQL和Linq Query中实现它。过滤后的值应为

    sql - 根据另一个表中的自定义属性过滤值-LMLPHP

    最佳答案

    您可以在SQL中尝试

    select DA.Id, DA.Product, CA.CustomeAttributeValue as IsOrganic
    from DeafaultAtrributeTable as DA inner join CustomAttributeTable as CA
    on DA.Id = CA.DefaultAttributeMappingId
    

    在LINQ
    var query =
       from DA in DeafaultAtrributeTable
       join CA in CustomAttributeTable  on DA.ID equals CA.DefaultAttributeMappingId
       where CA.CustomeAttributeValue == true
       select new { Id = DA.Id, Product = DA.Product, IsOrganic = CA.CustomeAttributeValue };
    

    或LINQ扩展方法是
      var query = DeafaultAtrributeTable     // your starting point - table in the "from" statement
          .Join(CustomAttributeTable  , // the source table of the inner join
             DA => DA.ID,        // Select the primary key (the first part of the "on" clause in an sql "join" statement)
             CA => CA.DefaultAttributeMappingId,   // Select the foreign key (the second part of the "on" clause)
            (DA, CA) => new { Id = DA.Id, Product = DA.Product, IsOrganic =
         CA.CustomeAttributeValue }) // selection
        .Where(RES => RES.CA.CustomeAttributeValue == true);    // where statement
    

    10-06 01:02