Linq与多列不同,并选择最新的行

时间:2012-05-31 22:34:28

标签: linq

我的数据有多条相似的数据。它们是游戏中的最新结果,例如,如果游戏中有3个进球,那就意味着3条线。

enter image description here

我想将一个游戏区分为一行。但不同的行必须是最新的(firstOrDefault?)

我确实想要显示status =已确认和状态=开放,但显然我不想同时显示同一游戏“确认”和“打开”

所以我想按“Hometeam”和“outteam”两栏进行分组。但是对于同一场比赛,如果有3个进球我会得到3条线,但我想要“最新线”。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情:

data.GroupBy(d => new { Hometeam = d.Hometeam, Outteam = d.Outteam })
    .Select(g => g.OrderBy(d => d.Status)
                  .ThenByDescending(d => d.GoalsHometeams + d.GoalsOutteams)
                  .First())
  1. 团队合作小组
  2. 对于每个组,查找具有最新状态的条目(Confirmed按字母顺序排在Open之前)
  3. 如果具有相同状态的多个(即多个Open),则会找到组合得分最高的条目。
  4. 获取每组的第一个结果(应该是最新的)。
  5. 演示:http://ideone.com/vlCtw

    示例结果:

    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