2

我有一个项目集合:

 class Item { 
      DateTime Start {get;set;}
      DateTime End {get;set;}
  }

随着开始和结束蜜蜂的日子,例如:09/08/2013

我需要列出:(DateTime x - how many items with Start >x and End < x)

我可以这样做:

  list(DateTime x, int HowMany) results
  dayZero = Earliest start day
  dayFinal = Latest end day
  for (currentDay : dayZero to dayFinal)
       put (currentDay,Get How Many Items with start>currentDay, end<currentDay)

但问题是项目在时间上是分散的,我将计算很多天的项目数量而不改变总项目的数量。我认为最好的解决方案是仅在项目的最初和最后几天进行迭代,但是提高性能的最佳方法是什么?

我正在使用 linq,所以我有:

protected readonly OL4RENTDb _context;
IQueryable<T> query = _context.Set<Item>();
query.Where <- ????
4

1 回答 1

0
Enumerable.Range(0, 1 + end.Subtract(start).Days)
.Select(offset=>new {
     day=start.AddDays(offset),
     count=Items.Count(i=>i.Start<start.AddDays(offset) && 
     i.End>start.AddDays(offset)});

我认为应该可以工作,因为开始=开始日期,结束=结束日期,Items 是 Item 的集合。

于 2013-06-09T06:09:16.040 回答