Мне нужна помощь со следующим запросом SQL, чтобы написать в запросе linq или метода расширения, если оба могут предоставить оба примера, было бы здорово для меня.
Этот запрос возвращает последний идентификатор, введенный пользователем, и возвращает идентификатор материала, который мне нужен для моей программы на c #.
SELECT TOP 1
CASE
WHEN s.Material = 'P4861VAPF' THEN 4578
WHEN s.Material = 'P2871VAPF' THEN 4579
WHEN s.Material = 'P2231VAPF' THEN 4580
ELSE NULL
END AS MaterialSelected
FROM
dbo.Shipments s
WHERE
s.material <> ''
ORDER BY
s.Id
Я написал этот метод расширения linq в C #, чтобы воссоздать мой SQL-запрос не работает правильно, вместо этого вернуть Id вместо оператора select case
public int GetLastShipmentMaterialEntry()
{
var lastShipmentMaterialEntry = BarcodeReceivingDbContext.Shipments
.Where(s => s.Material != "")
.OrderBy(s => s.Id)
.Select(s =>
s.Material == "P4861VAPF" ? 4578 :
s.Material == "P2871VAPF" ? 4579 :
s.Material == "P2231VAPF" ? 4580 : 0)
.FirstOrDefault();
return lastShipmentMaterialEntry;
}
Я видел другие примеры запросов из другого вопроса здесь, в переполнении стека и в Google, но не в точности моего текущего запроса. Я также попытался использовать linqpad, чтобы посмотреть, сможет ли он перевести его, но не повезло, поэтому любая помощь приветствуется.