作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 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/
我是一名优秀的程序员,十分优秀!