gpt4 book ai didi

c# - 使用 LINQ 在 LIST 中的最大和最小日期之间添加缺失日期列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:47 25 4
gpt4 key购买 nike

我正在尝试用没有销售的缺失日期填充我的列表...

我定义了这样一个类:

   public class GroupedItem
{
public DateTime _Date { get; set; }
public int Sales { get; set; }
}

现在列表是这样填充的:

var LineGraph = _groupedItems
.GroupBy(l => l._Date.Date)
.Select(cl => new GroupedItem
{
_Date = cl.Key,
Sales = cl.Sum(c=>c.Sales)
})
.OrderBy(x => x._Date)
.Where(t => t._Date <= DateTime.Now &&
t._Date >= DateTime.Now.Subtract(TimeSpan.FromDays(date_range)))
.ToList();

我得到的输出如下:

11th December 6 sales
13th December 8 sales
18th December 12 sales
19th December 25 sales

这很好,但我想添加第一个日期和最后一个日期之间缺少的日期,这样我就可以得到这样的输出:

11th December 6 sales
12th December 0 sales
13th December 8 sales
14th December 0 sales
15th December 0 sales
16th December 0 sales
17th December 0 sales
18th December 12 sales
21st December 25 sales

如何使用 LINQ 实现此目的?

最佳答案

This Post有一种方法可以根据范围生成日期列表。我认为我们必须将日期列表合并到您的 groupedquery,因为在我看来您的查询结果尚未包含销售额为 0 的日期的行。

var LineGraph = _groupedItems.Union(Enumerable.Range(1, date_range)
.Select(offset => new GroupedItem { _Date = DateTime.Now.AddDays(-(date_range)).AddDays(offset), Sales = 0} ))
.GroupBy(l => l._Date.Date)
.Select(cl => new GroupedItem
{
_Date = cl.Key,
Sales = cl.Sum(c=>c.Sales)
})
.Where(t => t._Date <= DateTime.Now &&
t._Date >= DateTime.Now.Subtract(TimeSpan.FromDays(date_range)))
.OrderBy(x => x._Date)
.ToList();

更正为包括今天和选择后的排序。

关于c# - 使用 LINQ 在 LIST 中的最大和最小日期之间添加缺失日期列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41286399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com