如何根据某些条件获取项目组

时间:2016-06-30 07:43:57

标签: c# linq

我有以下任务 - 给定一个对象列表(时间段)。TimeSegment是以下类型:

class TimeSegment
{
       public DateTime Start{get;set;}
       public DateTime End{get;set;}
}

此细分受众群先前按Start.Date值分组。我需要从每个组中获取片段,其中一个片段的End.TimeOfDay等于另一个元素的Start.TimeOfDay。有没有办法用LINQ做这些事情?谢谢你的建议。

2 个答案:

答案 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();

See fiddle here.

答案 1 :(得分:0)

这样的东西?

List<TimeSegment> times = db.TimeSegment.Where(t=>t.End.TimeOfDay.Equals(t.Start.Date) ).ToList();