LINQ查询结果以获取两个日期之间的十进制总和

时间:2018-10-09 21:29:18

标签: c# linq decimal

尝试查询两个日期之间的结果,获取列值,然后将其求和成小数。不幸的是,每次我传递不同的日期时,我都会得到所有结果。在两个日期之间获取结果有些问题。任何帮助表示赞赏。

这就是我现在拥有的:

 private static decimal QuerySales(DateTime startDateTime, DateTime endDateTime, IQueryable<ProductsSummary> summaries)
    {
        var relevantSummaries = (from summary in summaries
                     where ((summary.Date >= startDateTime.Date) && (summary.Date <= endDateTime.Date))
                     select summary);

        var netSales = (from records in relevantSummaries
                      select summaries.Sum(x => x.NetSales)).ToList();

        decimal sales = netSales.Any() ? netSales[0] : 0;
        return sales;
    }

2 个答案:

答案 0 :(得分:0)

这是解决方案:

 private static decimal QuerySales(DateTime startDateTime, DateTime endDateTime, IQueryable<ProductsSummary> summaries)
    {
        decimal sales = 0;
        var relevantSummaries = (from summary in summaries
                     where ((summary.Date >= startDateTime.Date) 
                            && (summary.Date <= endDateTime.Date))
                     select summary.NetSales);

        if (relevantSummaries != null)
        {
           sales = relevantSummaries.Sum();
        }

        return sales;
    }

答案 1 :(得分:0)

更简单,对LINQ使用Method Syntax

  return summaries
   .Where(s => s.Date >= startDateTime.Date && s.Date <= endDateTime.Date)
   .Sum(s => s.NetSales)