gpt4 book ai didi

c# - 如何使用 LINQ 计算最长连胜?

转载 作者:太空狗 更新时间:2023-10-29 22:23:25 25 4
gpt4 key购买 nike

目前,这只是我很好奇的事情,我没有正在处理的任何代码,但我想知道如何实现...

例如,我有一个应用程序可以跟踪世界上所有足球队的成绩。我想要做的是确定任何给定团队的最长“连胜”记录。

我想我很可能会有这样的数据表:

  • 匹配日期日期时间
  • TeamA 字符串
  • TeamB 字符串
  • TeamAGoals 积分
  • TeamBGoals int

例如,我想做的是找到最长的连胜纪录,其中 TeamA = "My Team" 显然这意味着 TeamAGoals 必须大于 TeamBGoals

正如我所说,这只是示例。对于这样的事情,不同的数据库设计可能会更好。但根本问题是如何计算匹配结果的最长连胜。

最佳答案

现在这是一个老问题,但我不得不自己解决同样的问题,并且认为人们可能对 Rawling 的 LongestStreak 扩展方法的完全 LINQ 实现感兴趣。这使用带有种子和结果选择器的聚合来遍历列表。

    public static int LongestStreak<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate)
{
return source.Aggregate(
new {Longest = 0, Current = 0},
(agg, element) => predicate(element) ?
new {Longest = Math.Max(agg.Longest, agg.Current + 1), Current = agg.Current + 1} :
new {agg.Longest, Current = 0},
agg => agg.Longest);
}

关于c# - 如何使用 LINQ 计算最长连胜?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com