比较LINQ中过去的日期

我必须编写一个LINQ语句,该语句查找项目在过去90天内出现在数据库中的次数。 这很容易,但他们希望在1-30天,31-60天和61-90天内查看数据。

我目前正在做的是创建一个包含四组数据的模型,获取所有唯一SKU的列表,然后查找它们在数据库中出现的次数。

我的问题是日期范围。 我正在创建新的DateTime对象并向他们添加NEGATIVE天,我正在尝试使用它来比较范围。 我无法弄清楚如何说出这样的话:

编辑日期介于(-30天)和(-60天)之间。

我无法使用SP。 必须有一个更简单的方法。 也许使用时间跨度,看看它是否落在那个跨度? 我不确定。 我很少与约会合作。

就像是:

DateTime today = DateTime.Today; DateTime minusThirty = today.AddDays(-30); DateTime minusSixty = today.AddDays(-60); // Normally I wouldn't use a query expression for just a single where clause, // but I assume you want more... var query = from item in db.Table where item.Date >= minusSixty && item.Date < minusThirty select item; 

可能想要<=> - 你应该为自己解决这个问题。 但是,你几乎肯定希望一个必然是包容性的, 一个必然是独占的,并且始终如一地使用它们 - 这样,任何项目都不会在多个桶中结束。

 DateTime date1 = DateTime.Now().AddDays(-30); DateTime date2 = DateTime.Now().AddDays(-60); if (yourDate.Date >= date2.Date && yourDate.Date <= date1.Date) { //DoSomething } 

在不确定您的结构时难以编写LINQ查询。 但要获得该日期范围,您可以在代码中执行以下操作:

 var difference = laterDate - earlierDate; if (difference <= TimeSpan.FromDays(60) && difference >= TimeSpan.FromDays(30)) ... 

这似乎对我有用VB.NET 3.5返回过去10分钟的项目列表…我敢肯定它可以调整以满足您的需求

  ' if online time is greater than 10 minutes ago pickup user check onLineTime.Date = now.AddMinutes(-10).Date check onLineTime.TimeOfDay = now.AddMinutes(-10).TimeOfDay Dim rsl = From s In db.tblSessions Where (s.SessionID <> context.Session.SessionID AndAlso s.onLineTime.Date = DateTime.Now.AddMinutes(-10).Date AndAlso s.onLineTime.TimeOfDay > DateTime.Now.AddMinutes(-10).TimeOfDay) 

其中s.onLineTime是SQL DATETIME字段,即。 2015-02-11 04:49:26.283

你为什么不做类似的事情

  TimeSpan beginning = TimeSpan.FromDays(30); TimeSpan end = TimeSpan.FromDays(60); var query = from item in database let difference = DateTime.Now - item.TimeStamp where difference > beginning && difference < end select item;