使用IQueryable获取两个日期之间的日期

时间:2013-10-10 14:04:28

标签: c# date iqueryable

我有一个IQueryable查询,我需要在同一个方法中使用它。 此查询基于另一个作为参数传递的查询。

我需要将值的结果乘以两个日期之间的天数。

参数查询= IQueryable lista;

IQueryable<ChildEntity> query = lista.SelectMany(s => s.ChildEntities).Where(w=>w.IsActive.Equals("Y");

DateTime maxDate = lista.Max(m => m.Date);

decimal value = query.Sum(s => (s.Value) * (maxDate - s.ParentEntity.Date).Days);

给出例外:

Specified method is not supported.

我也试过了:

decimal value = query.Sum(s => (s.Value) *  SqlMethods.DateDiffDay(maxDate, s.Parent.Date);

还尝试了 SqlFunctions.DateDiff EntityFunctions.DiffDays ,所有这三个都给了我这个例外:

Method 'System.Nullable`1[System.Int32] 
DateDiffDay(System.Nullable`1[System.DateTime], System.Nullable`1[System.DateTime])' 
is not supported for execution as SQL.

我不想使用Enumerable,因为这会导致大量记录。

有没有其他方法可以为此找到解决方案?

(顺便说一下,我正在使用Devart作为提供者。)

2 个答案:

答案 0 :(得分:0)

您的问题是您运行查询的数据库没有像net那样的时间跨度数据类型,但是大多数数据库存储的日期是自正式开始日期以来的天数,这意味着如果您将日期转换为您可以直接算术的数字

days = ((int)maxdate) - ((int)currentdate)

注意:那就是sudo不能运行

答案 1 :(得分:0)

int days = 0;
DateTime today = DateTime.Now;
DateTime maxDate = lista.Max(m => m.Date);

While (today <= maxDate)
{
   today.AddDays(7);
   days++
}