Raj*_*Raj 3 .net c# linq group-by
我有如下两节课。如果我有一个类Schedule的通用列表(如List),我将如何编写LINQ查询,这样我就可以获得该列表中SourceId匹配1,2,3 ... X和StartTime>一些日期时间的所有项目,然后我想要返回每个SourceId的前3个元素(即:按SourceId分组)
由于此列表将包含大量记录,因此我想编写最有效的LINQ查询
我也希望结果的最终形状为List的形式
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; }
}
Run Code Online (Sandbox Code Playgroud)
经过数小时的谷歌搜索:
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();
Run Code Online (Sandbox Code Playgroud)