C# 无法获取相关表的逻辑
产品价值C# 无法获取相关表的逻辑,c#,entity-framework,linq,asp.net-web-api,C#,Entity Framework,Linq,Asp.net Web Api,产品价值 SkuId OptionId ProductId valueid 1 2 264 10 产品选项 OptionId OptionName 2 Size 3 color 4 Weight productoptionvalue ValueId OptionId ValueName 10 2 Small
SkuId OptionId ProductId valueid
1 2 264 10
产品选项
OptionId OptionName
2 Size
3 color
4 Weight
productoptionvalue
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) ;
}
我认为您需要使用联接:
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,
});
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,
});