@ Ахмед Подсказка: если вам нужна помощь с запросом EF, включите соответствующую часть модели (классы, свободную конфигурацию, если есть), а не таблицы и столбцы.

ользую Asp.Net MVC 5 и Entity Framework 6.2.0 с синтаксисом методов расширения LINQ.

У меня есть 5 таблиц вариантов, подробности ниже:

Таблица продуктов:

ProductID Name
    12    T-Shirt

Таблица вариантов:

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

Таблица вариантов исполнения:

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

Sku Table:

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

VariantOptionCombination Table:

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

Я хочу показать записи этих таблиц на веб-странице как.

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

Я использую этот запрос для достижения желаемого результата. Как я могу перевести этот запрос в 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;
 Ahmed27 нояб. 2017 г., 17:03
Если этот запрос сложный и не имеет linq-эквивалента, можете ли вы мне помочь изменить запрос?
 dasblinkenlight27 нояб. 2017 г., 16:38
Если предположить,vo.max (vo.Name) `выберет самое высокое имя лексикографически. Это то, что вы хотите?

Ответы на вопрос(1)

        var query = from s in YourDbContext.DbSet<ProductSKU>
            join voc in YourDbContext.DbSet<ProductVariantOptionCombination> on s.SkuID equals voc.SkuID
            join vo in YourDbContext.DbSet<ProductVariantOption> on voc.VariantOptionID equals vo.VariantOptionID
            join v in YourDbContext.DbSet<ProductVariant> on vo.VariantID equals v.VariantID
            group new {s,voc, vo, v} by s.Price
            into g
            select new
            {
                Price = g.Key,
                Size = g.Max(x => x.v.Name == "Size" ? x.vo.VariantOptionName : ""),
                Color = g.Max(x => x.v.Name == "Color" ? x.vo.VariantOptionName : ""),
                Material = g.Max(x => x.v.Name == "Material" ? x.vo.VariantOptionName : "")
            };
 Ivan Stoev27 нояб. 2017 г., 20:40
@ Ахмед Подсказка: если вам нужна помощь с запросом EF, включите соответствующую часть модели (классы, свободную конфигурацию, если есть), а не таблицы и столбцы.
 Ahmed27 нояб. 2017 г., 19:20
Итак, как я могу использовать этот YourDbContext.DbSet <ProductVariantOptionCombination>?
 lucky27 нояб. 2017 г., 19:44
Во-первых, исследуйте структуру сущности и установите ее в своем приложении.
 Ahmed27 нояб. 2017 г., 19:13
Как я могу запросить отношение многие ко многим, используя сначала код Entity Framework и linq? Проблема заключается в том, что EF автоматически создает таблицу отношений ProductVariantOptionCombination. Итак, у меня нет этого в моем контексте?

Ваш ответ на вопрос