У меня есть SQL-запрос, который я недавно создал для инструмента, и я переделываю инструмент в MVC и использую LINQ to Entities.
Кажется, я не могу понять, как сортировать моисписок брендов путем взвешивания моих автомобилей по человеко-часам и значения их тестирования.
Вот SQL-запрос, который у меня был в старом инструменте:
SELECT Brand.ID, SUM(Car.EstManHours) - SUM(Car.EstManHours) * CAST(AVG(1.00 * TestingStatus.Value) AS DECIMAL(9 , 2)) / 100 AS Weighting
FROM TestingStatus INNER JOIN Car ON TestingStatus.ID = Car.StatusID
INNER JOIN Team ON Car.TeamID = Team.TeamID
RIGHT OUTER JOIN Brand
LEFT OUTER JOIN SubCategory ON Brand.ID = SubCategory.BrandID ON Car.SubCategoryID = SubCategory.ID
WHERE (Car.IsPunted == 'False')
GROUP BY Brand.YearID, Brand.FeatID
HAVING (Brand.YearID = @BrandYearID)
ORDER BY Weighting DESC
Я пробовал это, но могу ли яПомещенный в порядке убывания или возрастания порядок в списке фактически не изменяется, он сохраняет сортировку по Id:
var brands = (from b in _context.Brands
join s in _context.SubCategorys on f.Id equals s.BrandId
join c in _context.Cars on s.Id equals c.SubCategoryId
where (f.YearId == yearId && c.IsPunted == false)
orderby (c.ManHoursEst - (c.ManHoursEst * c.TestingStatu.Value / 100)) descending
select b).Distinct().ToList();
Буду признателен за помощь в этом преобразовании!
Спасибо.
РЕДАКТИРОВАТЬ:
Я сейчас пытаюсь получить порядок и сгруппировать для правильной работы.Следующий запрос перечисляет тонны дубликатов и не упорядочивает их должным образом, так как я не думаю, что мое взвешивание выполнено правильно.
var brands = (from b in _context.Brands
join s in _context.SubCategorys on f.Id equals s.BrandId
join c in _context.Cars on s.Id equals c.SubCategoryId
where (f.YearId == yearId && c.IsPunted == false)
let weighting = c.ManHoursEst - (c.ManHoursEst * c.TestingStatu.Value / 100)
orderby weighting descending
group b by b.Id).SelectMany(x=>x).ToList();
Есть идеи?