Почему эта группа LINQ не объединяет строки в vb.net?

У меня есть таблица с ключом из двух частей; столбец 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)
}

Я ищу решение, которое не включает создание пользовательских классов с соответствующими свойствами и пользовательской сортировкой / функции группировки и не использует лямбда-выражения в конце запроса.

Спасибо!

6
задан Tom Halladay 11 May 2012 в 22:28
поделиться