【问题标题】:Unable to get logic for related tables无法获取相关表的逻辑
【发布时间】:2019-10-09 15:27:09
【问题描述】:

productskuvalue

SkuId   OptionId    ProductId   valueid
1            2        264        10 

产品选项

OptionId    OptionName  
2             Size  
3            color  
4            Weight 

产品选项值

ValueId OptionId ValueName  
 10        2        Small   
 11        2       Medium   

现在我想从不同的表中获取基于 id 的名称。我写信是为了得到身份证。

ProductSKUValues = (from resp in productSkuValueRepository.GetProductSkuValuesById(id)
select new Contracts.Models.ProductSKUValueResponse()
 {
     SkuId = resp.SkuId,
     OptionId =  resp.OptionId,
     ValueId = resp.ValueId
 }).ToList()

linq 查询

public IQueryable<ProductSKUValue> GetProductSkuValuesById(int Id)
{
    return DbSet.Where(a => a.ProductId == Id) ;
}

请告诉我如何获取基于 id 的名称。

预期结果:

         SkuId = 1,
         OptionId =  2,
         OptionName= size,
         ValueId = 10,
         valueName= Small

【问题讨论】:

    标签: c# entity-framework linq asp.net-web-api


    【解决方案1】:

    我认为你需要使用连接:

    ProductSkuValues.Where(x => x.ProductId == id)
         .Join(ProductOptions, p => p.OptionId, po => po.OptionId, (p, po) => new 
              { 
                    p.SkuId,   
                    p.OptionId, 
                    //p.ProductId, 
                    p.ValueId, 
                    po.OptionName 
              })
         .Join(ProductOptionValues, po => new { po.OptionId, po.ValueId }, pov => new { pov.OptionId, pov.ValueId }, (po, pov) => new 
             { 
                    po.SkuId,   
                    po.OptionId, 
                    //po.ProductId,                     
                    po.OptionName,
                    po.ValueId, 
                    pov.ValueName,
             });
    

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 2014-01-27
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多