Как преобразовать этот вложенный запрос в Linq?

У меня есть следующий SQL-запрос и попытка преобразовать в LINQ

SELECT * 
FROM 
    (SELECT 
         *, 
         ROW_NUMBER() OVER (PARTITION BY ScannedItemId 
                            ORDER BY ScannedDate DESC) AS rn 
     FROM ItemTracking) A  
WHERE 
    A.rn = 1
    AND ScannedLoc = 1
ORDER BY 
    ItemTrackingId DESC

Возвращает идентификатор элемента, находящегося в расположении ( ScannedLoc) в данный момент.

Я новичок в LINQ и нахожу трудным собрать другие примеры вместе, особенно подзапросы и Row_Numberфункции.

Может кто-то указать мне правильный путь?

1 ответ

  1. Вы могли бы сделать что-то вроде этого:

    var output = (
        from i in ItemTracking
        group i by i.ScannedItemId into g
        select g.OrderByDescending(t => t.ScannedDate).First()
    ).OrderByDescending(t => t.ItemTrackingId);
    

    Но я не уверен, на какой SQL это будет переведено.