Полагаю, вам нужны самые строгие прогнозы, т. Е. Игры, в которых большинство людей согласны с результатом.
var predictions = db.Predictions
.GroupBy( g => g.gameId )
.Select( g => new
{
gameId = g.Key,
homeWin = g.Sum( h => h.homeWin ),
awayWin = g.Sum( a => a.awayWin ),
draw = g.Sum( d => d.draw )
})
.Select( g => new
{
gameId = g.gameId,
prediction = g.homeWin > g.awayWin
? (g.homeWin > draw
? 'homeWin'
: 'draw')
: (g.awayWin > g.draw
? 'awayWin'
: 'draw'),
strength = g.homeWin > g.awayWin
? (g.homeWin > draw
? g.homeWin
: g.draw)
: (g.awayWin > g.draw
? g.awayWin
: g.draw)
})
.OrderByDescending( g => g.strength )
.Take(3);
Возможно, вам удастся объединить два варианта, но для ИМО это повредитудобочитаемость кода.