我有一个看起来像这样的游戏 table : 日期、团队 1、团队 2、在家
样本条目可能是
2010 年 10 月 10 日,A 队、B 队、B 队 - 意味着 B 队在这场比赛中主场作战。有很多球队互相比赛。
我想使用 linq 来获取以下信息:
列出球队在主场的所有比赛,以及最近 3 到 5 场主场比赛。
关于如何实现这一点有什么建议吗?
最佳答案
我制作了一个小示例应用程序。我不是 100% 确定这是否符合您要查找的内容,所以如果我错过了您的问题要点,请发表评论。
编辑 我对其进行了修改以将日期考虑在内。
var games = new[]
{
new Game() {Date = new DateTime(2010, 12, 1), TeamA = "A", TeamB="B", AtHome = "B"},
new Game() {Date = new DateTime(2010, 11, 1), TeamA = "A", TeamB="B", AtHome = "A"},
new Game() {Date = new DateTime(2010, 10, 1), TeamA = "A", TeamB="B", AtHome = "B"},
new Game() {Date = new DateTime(2010, 9, 1), TeamA = "A", TeamB="B", AtHome = "A"},
new Game() {Date = new DateTime(2010, 8, 1), TeamA = "A", TeamB="B", AtHome = "B"},
new Game() {Date = new DateTime(2010, 7, 1), TeamA = "A", TeamB="C", AtHome = "A"},
new Game() {Date = new DateTime(2010, 6, 1), TeamA = "B", TeamB="C", AtHome = "C"},
new Game() {Date = new DateTime(2010, 5, 1), TeamA = "B", TeamB="C", AtHome = "C"},
new Game() {Date = new DateTime(2010, 4, 1), TeamA = "D", TeamB="C", AtHome = "C"},
new Game() {Date = new DateTime(2010, 3, 1), TeamA = "D", TeamB="B", AtHome = "D"},
new Game() {Date = new DateTime(2010, 2, 1), TeamA = "D", TeamB="B", AtHome = "B"},
new Game() {Date = new DateTime(2010, 1, 1), TeamA = "A", TeamB="D", AtHome = "D"},
new Game() {Date = new DateTime(2009, 12, 1), TeamA = "A", TeamB="D", AtHome = "A"},
new Game() {Date = new DateTime(2009, 11, 1), TeamA = "A", TeamB="B", AtHome = "A"},
new Game() {Date = new DateTime(2009, 10, 1), TeamA = "A", TeamB="B", AtHome = "B"}
};
var result = from g in games
orderby g.Date descending
where games.Where(w => (w.TeamA == g.AtHome || w.TeamB == g.AtHome)
&& w.Date <= g.Date)
.Take(5)
.Count(c => c.AtHome == g.AtHome) >= 3
select g;
class Game
{
public DateTime Date { get; set; }
public string TeamA { get; set; }
public string TeamB { get; set; }
public string AtHome { get; set; }
}
返回:
12/1/2010 A B B
11/1/2010 A B A
9/1/2010 A B A
7/1/2010 A C A
6/1/2010 B C C
关于c# - 使用 linq 在列上运行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4251792/