Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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 Mvc_Linq_Entity Framework 6 - Fatal编程技术网

C# 如何返回一天的结果?

C# 如何返回一天的结果?,c#,asp.net-mvc,linq,entity-framework-6,C#,Asp.net Mvc,Linq,Entity Framework 6,我正在尝试创建一个销售报告,用户可以在其中选择一个日期范围,并返回每天的销售总额和日期时间 我制作了一个方法,它接受两个日期时间——StartDate和EndDate,并循环这些日期之间的所有日期的对象,这样即使当天没有销售,我也可以返回日期和TotalSales=0 然后,我将其与我的GetOrders查询连接起来。如果我有一个时间间隔,比如2017-04-01-2017-04-30,这很好,但是如果我在同一天发送开始日期和结束日期,我的结果会出错。你知道我做错了什么吗 课程: public

我正在尝试创建一个销售报告,用户可以在其中选择一个日期范围,并返回每天的销售总额和日期时间

我制作了一个方法,它接受两个日期时间——StartDate和EndDate,并循环这些日期之间的所有日期的对象,这样即使当天没有销售,我也可以返回日期和TotalSales=0

然后,我将其与我的GetOrders查询连接起来。如果我有一个时间间隔,比如2017-04-01-2017-04-30,这很好,但是如果我在同一天发送开始日期和结束日期,我的结果会出错。你知道我做错了什么吗

课程:

public class Order
{
    public int Id { get; set; }
    public DateTime OrderDate { get; set; }
    public virtual ICollection<OrderItem> OrderItems { get; set; }
}

public class OrderItem
{
    public int Id { get; set; }
    public decimal UnitPrice { get; set; }
    public int Quantity { get; set; }
    public int Discount { get; set; }
    public virtual Order Order { get; set; }
}

public class DailySalesDto
{
    public DateTime Date { get; set; }
    public decimal TotalSales { get; set; }
}
/api/SalesVM/?起始日期=2017-04-25和结束日期=2017-04-26

[
  {
    "Date": "2017-04-26T00:00:00",
    "Day": 0,
    "TotalSales": 0
  }
]
[
  {
    "Date": "2017-04-25T00:00:00",
    "Day": 0,
    "TotalSales": 0
  },
  {
    "Date": "2017-04-26T00:00:00",
    "Day": 0,
    "TotalSales": 247
  }
]

使用>=获取salesForPeriod开始日期

var salesForPeriod = db.Orders.Where(b => b.OrderDate.Day >= startDate.Day && b.OrderDate.Day <= endDate.Day);

var salesForPeriod=db.Orders.Where(b=>b.OrderDate.Day>=startDate.Day&&b.OrderDate.Day对于startime,它应该是
2017年4月25日00:00:00
,对于结束时间,它应该是
2017年4月25日23:59:59
。不是这样吗?如果您将
startDate
endDate
放在同一天,这意味着时差为0。您需要将时间包括到g的时间等一天的结果。我想这会解决你的问题。试着接受为答案吧,我现在明白我的错误了。很好,谢谢!几分钟后会接受为答案。请尽可能接受,谢谢
[
  {
    "Date": "2017-04-25T00:00:00",
    "Day": 0,
    "TotalSales": 0
  },
  {
    "Date": "2017-04-26T00:00:00",
    "Day": 0,
    "TotalSales": 247
  }
]
var salesForPeriod = db.Orders.Where(b => b.OrderDate.Day >= startDate.Day && b.OrderDate.Day <= endDate.Day);