Запрос Entity Framework для получения последней версии из таблицы - PullRequest
1 голос
/ 27 февраля 2020

У меня есть эта таблица в моей БД:

   Id  Name    Version    AddedDate
   1   Table    1         2020-02-26 15:25:04.5366703
   2   Table    1         2020-02-26 15:25:01.8502928
   3   Table    2         2020-02-26 15:18:09.0415632
   4   Table    2         2020-02-26 15:18:23.6646620
   5   Chair    1         2020-02-26 15:16:25.7518968
   6   Chair    1         2020-02-26 15:18:49.1826797
   7   Chair    2         2020-02-26 15:24:41.0905596
   8   Chair    2         2020-02-26 15:24:37.4333049

Я пробовал этот запрос SQL, и он работает частично, но мне нужна вся строка, включая идентификатор, и он не работает, если я добавляю идентификатор на выбор.

Мне нужно написать запрос структуры сущностей так, чтобы результат имел последнее добавленное Таблица 1, Таблица 2, Председатель 1, Председатель 2

SELECT [Name],[Version], MAX(AddedDate) as AddedDate
From JsonSchemas
GROUP BY Name, Version
ORDER BY MAX(AddedDate) DESC

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Вы можете попробовать этот код:

var result = (from item in _dbContext.JsonSchemas.ToList()
                 group item by new { item.Name, item.Version } into r
                 select new
                 {
                     Id = r.Select(q => q.Id).First(),
                     Name = r.Key.Name,
                     Version = r.Key.Version,
                     AddedDate = r.Max(q => q.AddedDate)
                 }).ToList();
0 голосов
/ 27 февраля 2020

Вы можете группировать по Имени и версии и получать последние Добавленные Даты, заказав Добавленные Даты, как показано ниже:

var lst = dbContext.JsonSchemas.GetAsNoTracking()
                .GroupBy(a => new {a.Name, a.Version})
                //.ToList()
                .Select(g => g.OrderByDescending(t => t.AddedDate).FirstOrDefault())
                .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...