LINQ: seleccione registros con el valor máximo de propiedad por grupo

Tengo un conjunto de datos como este:

GroupName   GroupValue   MemberName   MemberValue
'Group1'    1            'Member1'    1
'Group1'    1            'Member2'    2
'Group2'    2            'Member3'    3
'Group2'    2            'Member4'    2
'Group3'    2            'Member5'    4
'Group3'    2            'Member6'    1

Lo que quiero seleccionar es las filas que tienen el máximoMemberValue porGroupName, pero solo para aquellosGroupNames que tienen el mayorGroupValuey pasarlos a una función de delegado. Me gusta esto:

'Group2'    2            'Member3'    3
'Group3'    2            'Member5'    4

Hasta ahora he probado este formato ...

data.Where(maxGroupValue => 
    maxGroupValue.GroupValue == data.Max(groupValue => groupValue.GroupValue))
.Select(FunctionThatTakesData)

... pero eso me da todos los miembros de Group2 y Group3. He intentado poner unGroupBy() antes deSelect(), pero eso convierte la salida en unIGrouping<string, DataType> entoncesFunctionThatTakesData() no sabe qué hacer con él y no puedo hacer otroWhere() para filtrar solo el máximoMemberValues.

¿Qué puedo hacer para que este conjunto de datos se filtre correctamente y pase a mi función?

Respuestas a la pregunta(2)

Su respuesta a la pregunta