Я хочу построить запрос Linq для сценария ниже:
Таблица 1
PriceId
ProductId
ProductPrice
ProductHeight
ProductWeight
ProductType
Таблица 2
ProductId
ProductName
Задача: Выбрать самые дешевые цены и названиядля продуктов, где:
- productHeight = 5
- productWeight = 10
- productTypes: "abc", "xyz"
ожидаемый конечный результат - это список объектов, подобных этому:
ProductId
ProductName
TheCheapestPrice(the cheapest ProductPrice)
Я создал запрос SQL для получения этой информации, однако у меня возникла проблема с записью его в LINQ.
SQL-запрос:
SELECT
t1.ProductId,
t2.ProductName,
MIN(t1.ProductPrice) AS TheCheapestPrice
FROM
Table1 t1
INNER JOIN Table2 t2 ON t1.ProductId = t2.ProductId
WHERE
t1.ProductHeight = 5
AND
t1.ProductWeight = 10
AND
t1.ProductType IN ('abc', 'xyz')
GROUP BY
t1.ProductId,
t2.ProductName
Не могли бы вы помочь мне достичь того же результата в LINQ?
Пока я создал такой LINQ, однако у меня естьпроблема с получением минимальной цены:
from t1 in Table1
where
productTypes.Contains(t1.ProductType)
&&
t1.ProductHeight == 5
&&
t1.ProductWeight == 10
join t2 in Table2 on t1.ProductId equals t2.ProductId
group new { t1.ProductId, t2.ProductName }
by new { t1.ProductId, t2.ProductName } into topPrices
select new
{
ProductId = topPrices.Key.ProductId,
ProductName = topPrices.Key.ProductName,
TheCheapestPrice = ???
}