Объединение трех таблиц в рамках сущности и получение только результата первой строки вместо всех строк
Я пытаюсь объединить три таблицы ПРОДАЖ, ПРОДУКТА и ПОЛЬЗОВАТЕЛЕЙ. Получение названий ПРОДУКТА и ПОЛЬЗОВАТЕЛЯ из БД по их идентификатору, указанному в таблице ПРОДАЖ
Проблема в том, что он только вычисляет и получает результат первой строки таблицы продаж.
Вот кодекс.
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);