获取没有被其他期间覆盖的期间
Get periods without cover by another periods
我有如下所示的 Db 实体:
TimeEntity {
public DateFrom {get; set;}
public DateTo {get; set;}
}
有些活动是一项一项的,但有时会出现休息的情况。
没有 activity 时如何获取经期?
如何通过linq做到这一点?我必须从数据库获取所有活动并自己完成吗?
谢谢!
这个查询应该return个空白。
var withoutAdjacent =
from p in ctx.Periods
where !ctx.Periods.Any(p2 => p2.DateFrom == p.DateTo) && ctx.Periods.Any(p2 => p2.DateFrom > p.DateTo)
select p;
var gapPeriods =
from p in withoutAdjacent
select new TimeEntity
{
DateFrom = p.DateTo,
DateTo = ctx.Periods.Where(p2 => p2.DateFrom > p.DateTo).Min(p2 => DateFrom)
};
我有如下所示的 Db 实体:
TimeEntity {
public DateFrom {get; set;}
public DateTo {get; set;}
}
有些活动是一项一项的,但有时会出现休息的情况。 没有 activity 时如何获取经期? 如何通过linq做到这一点?我必须从数据库获取所有活动并自己完成吗?
谢谢!
这个查询应该return个空白。
var withoutAdjacent =
from p in ctx.Periods
where !ctx.Periods.Any(p2 => p2.DateFrom == p.DateTo) && ctx.Periods.Any(p2 => p2.DateFrom > p.DateTo)
select p;
var gapPeriods =
from p in withoutAdjacent
select new TimeEntity
{
DateFrom = p.DateTo,
DateTo = ctx.Periods.Where(p2 => p2.DateFrom > p.DateTo).Min(p2 => DateFrom)
};