1
Как я могу преобразовать следующий запрос T-SQL, который дает правильные результаты, в выражение LINQ в C#?Как преобразовать T-SQL в LINQ?
WITH CTE
AS (SELECT RN = ROW_NUMBER() OVER (PARTITION BY dbo.Product.ID ORDER BY dbo.Picture.UpdatedDate ASC)
,Product.ID
,Product.Name
,Picture.Path
FROM Dbo.Product
INNER JOIN dbo.Product_Picture_Mapping
ON dbo.Product_Picture_Mapping.ProductID = dbo.Product.ID
INNER JOIN dbo.Picture
ON dbo.Picture.ID = dbo.Product_Picture_Mapping.PictureID)
SELECT ID AS 'ID'
,Name AS 'Name'
FROM CTE
WHERE RN = 1
Я пробовал следующий код.
var result= (from c in cd.Product
join pp in cd.Product_Picture_Mapping
on c.ID equals pp.ProductID
join pcc in cd.Picture
on pp.PictureID equals pcc.ID
select new ProductViewModel() { PicturePath = pcc.Path, ProductName = c.Name, ProductID = c.ID}).ToList();
Что вы получаете? Исключение? Неверные данные? Выходы столбцов различаются между двумя запросами для стартеров. –
поэтому, у меня есть только одна фотография, имя которой является продуктом1. product1 есть 4 картинки, я получаю только 1 строку через sql-запрос (это то, что я хочу) , но я получаю 4 строки через выражение лямбда, это проблема для меня. Я хочу только 1 строку –
возможный дубликат [Row \ _number over (Partition by xxx) в Linq?] (http://stackoverflow.com/questions/9980568/row-number-over-partition-by-xxx-in- LINQ) –