Невозможно получить логику для связанных таблиц - PullRequest
1 голос
/ 23 мая 2019

productskuvalue

SkuId   OptionId    ProductId   valueid
1            2        264        10 

productoption

OptionId    OptionName  
2             Size  
3            color  
4            Weight 

productoptionvalue

ValueId OptionId ValueName  
 10        2        Small   
 11        2       Medium   

теперь я хочу получить имена, основанные на идентификаторах, из разных таблиц. я написал, чтобы получить идентификаторы.

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

linq query

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

Пожалуйста, дайте мне знать, как получить имена на основе идентификатора.

ожидаемый результат:

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

1 Ответ

1 голос
/ 23 мая 2019

Я думаю, вам нужно использовать объединения:

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,
         });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...