Linq由多个列区分,并选择最新的行
我有一个多行相似的数据。它们是比赛中的最新结果,例如,如果比赛中有3个进球,那就意味着3条线 我想把一场比赛分成一条线。但是不同的行必须是最新的(firstOrDefault?) 我确实想显示状态=确认和状态=打开,但显然我不想同时显示同一个游戏的“确认”和“打开” 所以我想按“Hometeam”和“outteam”两列进行分组。但对于同一场比赛,如果有3个进球,我会得到3条线,但我想要“最新的线”Linq由多个列区分,并选择最新的行,linq,Linq,我有一个多行相似的数据。它们是比赛中的最新结果,例如,如果比赛中有3个进球,那就意味着3条线 我想把一场比赛分成一条线。但是不同的行必须是最新的(firstOrDefault?) 我确实想显示状态=确认和状态=打开,但显然我不想同时显示同一个游戏的“确认”和“打开” 所以我想按“Hometeam”和“outteam”两列进行分组。但对于同一场比赛,如果有3个进球,我会得到3条线,但我想要“最新的线” 有人能帮我吗?你可以试试这样的东西: data.GroupBy(d => new { H
有人能帮我吗?你可以试试这样的东西:
data.GroupBy(d => new { Hometeam = d.Hometeam, Outteam = d.Outteam })
.Select(g => g.OrderBy(d => d.Status)
.ThenByDescending(d => d.GoalsHometeams + d.GoalsOutteams)
.First())
已确认
按字母顺序排在打开
之前)Current game status results:
Confirmed, Fylkir, Valur, 3, 1
Confirmed, Selfoss, Grindavik, 3, 3
Confirmed, Keflavik, IBV, 1, 0
Confirmed, Stjarnan, IA, 1, 1
Confirmed, Breioablik, Fram, 0, 2
非常感谢您的回答,但是我只得到包含status=open的结果,请参见->??@agh:对于您的真实数据集,status所使用的语言似乎是“open”,实际上是按字母顺序排在“confirm”之前的。因此,为了使我的解决方案适应您的另一种语言,您需要使用
g.OrderByDescending(d=>d.status)
,而不是按状态降序。然后它应该显示预期的结果。