gpt4 book ai didi

c# - LINQ In Clause With Group By 和每个组中的 TOP N 记录

转载 作者:行者123 更新时间:2023-11-30 15:06:01 25 4
gpt4 key购买 nike

我有 2 个类,如下所示。如果我有一个像 List 这样的类 Schedule 的通用列表,我将如何编写一个 LINQ 查询,以便我可以获得此列表中的所有项目,其中 SourceId 匹配 1,2,3...X 和 StartTime > 某个日期时间,然后我想要返回每个 SourceId 的前 3 个元素(即:按 SourceId 分组)

由于此列表将包含大量记录,我想编写最高效的 LINQ 查询

另外我希望结果的最终形状是列表的形式

public class Source
{
public int SourceId { get; set; }
public string Name { get; set; }
}

public class Schedule
{
public int SourceId { get; set; }
public Source Source { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}

最佳答案

经过几个小时的谷歌搜索:

var result = r.ScheduleList.
Where(s => sourceIdIntArray.Contains(s.SourceId) &&
s.StartTime >= new DateTime(2011, 09, 20)).
GroupBy(s => s.SourceId).
SelectMany(g => g.OrderBy(s => s.StartTime).
Take(3)).
ToList();

关于c# - LINQ In Clause With Group By 和每个组中的 TOP N 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8401401/

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