C# 按日期列出项目数

C# 按日期列出项目数,c#,linq,C#,Linq,我收集了一些物品: class Item { DateTime Start {get;set;} DateTime End {get;set;} } 开始和结束啤酒日,例如:09/08/2013 我需要做一个列表:(DateTime x-开始>x和结束当前日期,结束可枚举范围的项目数(0,1+结束.减去(开始).Days) .选择(偏移量=>新建{ 天=开始。添加天(偏移量), count=Items.count(i=>i.Startstart.AddDays(

我收集了一些物品:

 class Item { 
      DateTime Start {get;set;}
      DateTime End {get;set;}
  }
开始和结束啤酒日,例如:
09/08/2013

我需要做一个列表:
(DateTime x-开始>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)
list(DateTime x,int-HowMany)结果
dayZero=最早开始日期
dayFinal=最近的结束日
用于(当前日期:从零日到最终日期)
put(currentDay,获取开始>当前日期,结束<代码>可枚举范围的项目数(0,1+结束.减去(开始).Days)
.选择(偏移量=>新建{
天=开始。添加天(偏移量),
count=Items.count(i=>i.Startstart.AddDays(offset)});

我认为应该可行,因为开始=开始日期,结束=结束日期,项目是项目的集合。

您如何迭代“项目的初始和最终日期”?您希望什么性能更好..伪代码有点奇怪..put做什么,是“使用开始>当前日期获取多少项目”对计数和日期时间进行某种比较?你的标题表明你想对项目进行排序,还是我误解了?我不知道你想完成什么。性能越高,db管理器完成查询的速度越快。psuedo代码很简单:put=添加到列表中,并使用start>currentday的方式获取多少个项目这样做很简单(对集合进行迭代),所以我没有把它放在伪代码中。do
是的,但是supouse:Item1:(12/12/1990-12/12/2010)Item2(12/12/2009-12/12/2020)在这种情况下,您将迭代1990-2010年的每一天,计算每一天的项目数量,并且不做任何更改。我认为如果您不迭代每一天,效率会更高。当然,这取决于您的数据。您是希望少量的项目具有大范围,还是大量的项目具有small范围?少量项目范围较大,这就是问题所在:)
protected readonly OL4RENTDb _context;
IQueryable<T> query = _context.Set<Item>();
query.Where <- ????
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)});