Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据总天数检索日期范围之间的行_C#_Asp.net_Entity Framework_Linq - Fatal编程技术网

C# 根据总天数检索日期范围之间的行

C# 根据总天数检索日期范围之间的行,c#,asp.net,entity-framework,linq,C#,Asp.net,Entity Framework,Linq,我使用LINQ从db查询了一个IQueryable结果,现在我必须根据发送的字段日期过滤所有行。天数应从发送日期到当前日期计算。应检索0到30天范围内的总天数。我该怎么做呢。我有下面的代码,但它不工作。没有错误,但过滤不正确 query = query.Where(x => x.DATE_SENT != null); query = query.Where(x => (int)(EntityFunctions.DiffDays(currentDate, (DateTime)x.DA

我使用LINQ从db查询了一个IQueryable结果,现在我必须根据发送的字段日期过滤所有行。天数应从发送日期到当前日期计算。应检索0到30天范围内的总天数。我该怎么做呢。我有下面的代码,但它不工作。没有错误,但过滤不正确

query = query.Where(x => x.DATE_SENT != null);

query = query.Where(x => (int)(EntityFunctions.DiffDays(currentDate, (DateTime)x.DATE_SENT)) >= 0 && 
                         (int)(EntityFunctions.DiffDays(currentDate, (DateTime)x.DATE_SENT)) <= 30);                                                         
query=query.Where(x=>x.DATE\u SENT!=null);
query=query.Where(x=>(int)(EntityFunctions.DiffDays(currentDate,(DateTime)x.DATE\u SENT))>=0&&

(int)(EntityFunctions.DiffDays(currentDate,(DateTime)x.DATE_SENT))您可以使用此查询获取它

var dtDiff = DateTime.Now.AddDays(-30);
query  = query.Where(z=>  z.DATE_SENT >= dtDiff);
31-60天

   var dtDiff31 =DateTime.Now.AddDays(-31);
   var dtDiff60 =DateTime.Now.AddDays(-60);
   query  = query.Where(z=>  z.DATE_SENT >= dtDiff60 && z.DATE_SENT <= dtDiff31 );
var dtDiff31=DateTime.Now.AddDays(-31);
var dtDiff60=DateTime.Now.AddDays(-60);

query=query.Where(z=>z.DATE\u SENT>=dtDiff60&&z.DATE\u SENT您似乎只想按一系列日期进行筛选:

DateTime filterDate = currentDate.AddDays(-30);

query = query.Where(x => x.DATE_SENT >= filterDate);
如果您的
currentDate
可能发生变化,请添加第二个条件:

query = query.Where(x => x.DATE_SENT >= filterDate && x.DATE_SENT < currentDate);
query=query.Where(x=>x.DATE\u SENT>=filterDate&&x.DATE\u SENT
它是如何无法正确过滤的。您得到了什么?您期望得到什么?我期望得到6行,但只返回一行。我已验证发送的日期在0-30天之间,但没有显示。您需要获得过去30天的行数?我尝试了您的代码。它引发了我的错误“LINQ to Entities无法识别方法'System.DateTime AddDays(Double)'方法,此方法无法转换为存储表达式”感谢此方法在0-30天内有效,我需要下一个31-60天的范围。如何设置范围?