Удалить повторяющиеся записи, используя наибольшую дату (Linq Query) - PullRequest
0 голосов
/ 09 мая 2019

У меня есть таблица с повторяющимися значениями, и я хотел бы удалить повторяющиеся записи, используя наибольшую дату.

Id| PId | StartDate              | RegNo |
 -------------------------------------------
 1| A08 |2018-02-07 00:00:00.000 | OLP009|
 2| A08 |2018-02-09 00:00:00.000 | OLP009|
 3| A08 |2018-07-17 00:00:00.000 | OLP009|
 4| A08 |2019-01-09 00:00:00.000 | OLP009|
 5| A31 |2018-01-09 00:00:00.000 | KP9110|
 6| A31 |2018-01-17 00:00:00.000 | KP9110|

Мой запрос linq выглядит примерно так

IEnumerable<Credentials> credentials = await this.context.Credentials.SqlQuery("SELECT Id, PId, StartDate, RegNo FROM dbo.regTbl").ToListAsync();

Я пытаюсь добиться чего-то подобного из моего оператора select linq

Id| PId | StartDate              | RegNo |
 ------------------------------------------
 4| A08 |2019-01-09 00:00:00.000 | OLP009|
 6| A31 |2018-01-17 00:00:00.000 | KP9110|

Я использую Entity Framework версии 6.2

1 Ответ

3 голосов
/ 09 мая 2019

Это оператор SQL для вашего требования. Теперь вы можете преобразовать его в оператор LINQ.

SELECT A.ID,A.PID,A.startdate,A.regno 
FROM
(
    SELECT 
    ROW_NUMBER() OVER(PARTITION BY PID ORDER BY startdate DESC) RN, 
    * 
    FROM yourtable
)A WHERE RN = 1
...