Объединение трех таблиц в рамках сущности и получение только результата первой строки вместо всех строк

Я пытаюсь объединить три таблицы ПРОДАЖ, ПРОДУКТА и ПОЛЬЗОВАТЕЛЕЙ. Получение названий ПРОДУКТА и ПОЛЬЗОВАТЕЛЯ из БД по их идентификатору, указанному в таблице ПРОДАЖ

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

Вот кодекс.

                                  
            var saleslist = (
                from sale in db.Sales
                join p in db.Products on sale.sale_id equals p.product_id
                join u in db.Users on sale.user_id equals u.user_id

                select new SalesView
                {
                    sale_id = sale.sale_id,
                    sale_amount = sale.sale_amount,
                    sale_time = sale.sale_time,
                    product_name = p.product_name,
                    user_name = u.user_first_name
                }).ToList();
          
            return View(saleslist);

SalesView - это класс модели, который будет использоваться для отображения вычисленных результатов в представлении.

кто-нибудь может помочь?

2 ответа

Решение

Ваше присоединение к Products таблица неверна. + Изменить

join p in db.Products on sale.sale_id equals p.product_id

в

join p in db.Products on sale.product_id equals p.product_id

Учитывая, что у вас есть правильные свойства соединений, попробуйте следующее:

var saleslist = (
            from sale in db.Sales
            join p in db.Products on sale.sale_id equals p.product_id into temp
            from t in temp join u in db.Users on t.user_id equals u.user_id into temp2 
            from t2 in temp2
            select new SalesView
            {
                sale_id = sale.sale_id,
                sale_amount = sale.sale_amount,
                sale_time = sale.sale_time,
                product_name = t.product_name,
                user_name = t2.user_first_name
            }).FirstOrDefault();

        return View(saleslist);
Другие вопросы по тегам