¿Cómo usar la consulta sql de agregación condicional en Entity Framework?

Estoy usando Asp.Net MVC 5 y Entity Framework 6.2.0 con la sintaxis de métodos de extensión LINQ.

Tengo 5 tablas de variantes, detalles a continuación:

Tabla de productos:

ProductID Name
    12    T-Shirt

Tabla de variantes:

VariantID  ProductID  Name
    1         12      Size
    2         12      Color
    3         12      Material

Tabla de opciones de variantes:

VariantOptionID  VariantID  VariantOptionName
      1              1            Small
      2              1            Medium
      3              2            Red
      4              2            Blue
      5              3            Cotton
      6              3            Lawn

Tabla de sku:

SkuID  ProductID  SKU              Price   Barcode
  1       12      Th-Sm-Red-Cot    120.00  345423
  2       12      Th-Sm-Red-Lon    130.00  345454
  3       12      Th-Sm-Blue-Cot   140.00  345451
  4       12      Th-Sm-Blue-Lon   150.00  345431
  5       12      Th-Md-Red-Cot    160.00  345472
  6       12      Th-Md-Red-Lon    170.00  345479
  7       12      Th-Md-Blue-Cot   180.00  654353
  8       12      Th-Md-Blue-Lon   190.00  254353

Tabla de combinación de opciones de variantes:

VariantOptionID  SkuID
      1            1
      3            1
      5            1
      1            2
      3            2
      6            2
      1            3
      4            3
      5            3
      1            4
      4            4
      6            4

Quiero mostrar estos registros de tablas en la página web como.

Size    Color  Material  Price   Sku
Small   Red    Cotton    120.00  345423
Small   Red    Lawn      130.00  345454
Small   Blue   Cotton    140.00  345451
Small   Blue   Lawn      150.00  345431
Medium  Red    Cotton    160.00  345472
Medium  Red    Lawn      170.00  345479
Medium  Blue   Cotton    180.00  654353
Medium  Blue   Lawn      190.00  254353

Estoy usando esta consulta para lograr el resultado deseado. ¿Cómo puedo traducir esta consulta en Entity Framework linq?

select  max(case when v.Name = 'Size' then vo.Name end) as Size,
    max(case when v.Name = 'Color' then vo.Name end) as Color,
    max(case when v.Name = 'Material' then vo.Name end) as Material,
    s.price
from ProductSKU s
join ProductVariantOptionCombination voc
on s.SkuID = voc.SkuId
join ProductVariantOption vo
on vo.VariantOptionId = voc.VariantOptionId  
join ProductVariant v
on v.VariantId = vo.VariantId
group by s.Price;

Respuestas a la pregunta(1)

Su respuesta a la pregunta