我有以下任务 - 给定一个对象列表(时间段)。TimeSegment
是以下类型:
class TimeSegment
{
public DateTime Start{get;set;}
public DateTime End{get;set;}
}
此细分受众群先前按Start.Date
值分组。我需要从每个组中获取片段,其中一个片段的End.TimeOfDay
等于另一个元素的Start.TimeOfDay
。有没有办法用LINQ做这些事情?谢谢你的建议。
答案 0 :(得分:1)
这是一种方法:
创建并填充该组:
var group = new List<TimeSegment>();
group.Add(new TimeSegment() { Start = DateTime.Today.AddHours(1), End = DateTime.Today.AddHours(2) });
group.Add(new TimeSegment() { Start = DateTime.Today.AddHours(3), End = DateTime.Today.AddHours(4) });
group.Add(new TimeSegment() { Start = DateTime.Today.AddHours(4), End = DateTime.Today.AddHours(5) });
group.Add(new TimeSegment() { Start = DateTime.Today.AddHours(6), End = DateTime.Today.AddHours(7) });
获取连续的时间段(按开始时间排序):
var result = group.Where(t1 => group.Any(t2 => t2.End == t1.Start || t2.Start == t1.End)).OrderBy(t => t.Start).ToList();
答案 1 :(得分:0)
这样的东西?
List<TimeSegment> times = db.TimeSegment.Where(t=>t.End.TimeOfDay.Equals(t.Start.Date) ).ToList();