У меня есть таблица с ключом из двух частей; столбец ID и номер версии. Я пытаюсь выбрать «только последнюю версию» записей.
Я пытаюсь использовать стиль выражений LINQ, чтобы получить GROUP BY и получить совокупное максимальное значение версии. Однако агрегации не происходит.
Сводный код:
From C In Credentials
Group Join ....
Group Join ....
Group C.CredentialID, NE.ClientID, C.Version By
NE.ClientID, C.CredentialID Into CGroup = Group
From CG In CGroup
Select New With {
.ClientID = CG.ClientID,
.CredentialID = CG.CredentialID,
.MaxVersion = CGroup.Max(Function(p) p.Version)
}
Фактические результаты:
ClientID CredentialID MaxVersion
1196 1 3
1196 1 3
1196 1 3
1196 2 1
Желаемые результаты:
ClientID CredentialID MaxVersion
1196 1 3
1196 2 1
Также попробовал, те же результаты:
Group C By Key = New With
{Key NE.ClientID, Key C.CredentialID} Into CGroup = Group
From CG In CGroup
Select New With {
.ClientID = Key.ClientID,
.CredentialID = Key.CredentialID,
.MaxVersion = CGroup.Max(Function(p) p.Version)
}
Я ищу решение, которое не включает создание пользовательских классов с соответствующими свойствами и пользовательской сортировкой / функции группировки и не использует лямбда-выражения в конце запроса.
Спасибо!