This is the query I need to convert to a LINQ statement for use inside my ASP.NET MVC 3 project. I’m not all that good with LINQ yet so I’m going to need some help please.
WITH CTE AS (
SELECT a.GalleryID GalleryID_A, a.GalleryTitle, a.GalleryDate, b.*
,ROW_NUMBER() OVER (PARTITION BY a.GalleryID, a.GalleryTitle, a.GalleryDate
ORDER BY b.MediaThumb DESC) AS Rn
FROM Media b
INNER JOIN Galleries A ON a.GalleryID = b.GalleryID
),
CTE2 AS (
SELECT a.GalleryID GalleryID_A, a.GalleryTitle, a.GalleryDate, b.*, 1 Rn
FROM Media b
LEFT OUTER JOIN Galleries A ON a.GalleryID = b.GalleryID
)
SELECT * FROM CTE where rn = 1
UNION ALL
SELECT * FROM CTE2
WHERE rn = 1
AND galleryid is null
ORDER BY MediaID DESC
This was my solution.
var Results = DB.Database.SqlQuery<WhatsNew>
(@" WITH CTE AS (
SELECT a.GalleryTitle, a.GalleryDate, b.*,
ROW_NUMBER() OVER (PARTITION BY a.GalleryID, a.GalleryTitle, a.GalleryDate
ORDER BY b.MediaThumb DESC) AS Rn
FROM Media b
INNER JOIN Galleries A
ON a.GalleryID = b.GalleryID
),
CTE2 AS
(
SELECT a.GalleryTitle, a.GalleryDate, b.*,
1 Rn
FROM Media b
LEFT OUTER JOIN Galleries A
ON a.GalleryID = b.GalleryID
)
SELECT * FROM CTE where rn = 1
UNION ALL
SELECT * FROM CTE2 WHERE rn = 1 and galleryid is null
ORDER BY MediaID DESC ");
Create your query as a view in sql, say “MyView” and then call that from your MVC project.