Sql server SQL到LINQ简单查询?
下面是一个sql server表,用于保存用户对足球比赛的预测。用户可以预测特定足球比赛的主场胜利、客场胜利或平局/平局 如何查询此表以查找前3个预测,前3个游戏必须是不同的gameId 无论是SQL还是LINQ解决方案,都会非常受欢迎Sql server SQL到LINQ简单查询?,sql-server,linq-to-sql,Sql Server,Linq To Sql,下面是一个sql server表,用于保存用户对足球比赛的预测。用户可以预测特定足球比赛的主场胜利、客场胜利或平局/平局 如何查询此表以查找前3个预测,前3个游戏必须是不同的gameId 无论是SQL还是LINQ解决方案,都会非常受欢迎 我假设你想要最强烈的预测,即大多数人都同意结果的比赛 var predictions = db.Predictions .GroupBy( g => g.gameId )
我假设你想要最强烈的预测,即大多数人都同意结果的比赛
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);
您可能可以将这两个选项组合在一起,但在我看来,这会损害代码的可读性。因此,对于示例数据,您希望示例输出是什么?对不起,是的,输出!我只想使用示例数据输出gameId,我们可以看到gameId 5都预测了5场主场胜利和5场客场胜利(在他的场景中,我会选择评分最高的球队作为最受欢迎的球队,我想这超出了这个问题的范围),因为我不希望gameId 5返回两次,谢谢tvanfosson你回答了我遗漏的问题,是的,我希望得到最一致的预测,我会测试你的答案并报告回来!谢谢