【问题标题】:Getting all months in an Year from Entity Framework core query从实体框架核心查询中获取一年中的所有月份
【发布时间】:2021-11-17 09:55:11
【问题描述】:

我已经关注EF.core(3.1/3.2)查询

var monthlySalesList = context.Bids.Include(r => r.AllRequest).ThenInclude(r => r.Category).Where(b => b.UID== UID && (b.Status == MyStatus.Awarded || b.Status == MyStatus.Completed))
                    .GroupBy(a => new { Month =a.InsertedDate.Month })

                  .Select(g => new MyServiceList()
                  {
                      Key = g.Key.ToString(),
                      Month = g.Key.Month.ToString(),
                      Total= g.Sum(s => s.totalBudget)

                  }).ToList();

我没有得到一年中的所有月份,而是只显示 2 个月,例如 (10,11)。在上面的查询中,Mystatus 是一个 ENUM 类,MyserviceList Model 类包含获取和设置,例如 @987654325 @.

我只得到

-----------------
Months total
------------------
10   1234
11  1212

如何获得零值的剩余月份。

-----------------
Months total
------------------
1    0 
2    0
3    0
4    0
5    0
6    0
7    0
8    0
9    0
10   1234
11  1212
12  0 

【问题讨论】:

    标签: entity-framework entity-framework-core


    【解决方案1】:
    1. 定义另一个列表
    2. 在“monthlySalesList”之后创建一个 for 循环并从列表中进行查询。
    3. 如果没有得到数据,则在新列表中设置 0,否则设置值。

    例如:

    类: 公共类报告数据 { 公共 int 月 { 获取;放; } 公共 int 总计 { 获取;放; } }

    代码:

    列出reportData = new List();

            for (int i = 1; i <= 12; i++)
            {
                try
                {
                    Bids bids = new Bids();
    
                    bids = monthlySalesList.Where(t => t.month == i).FirstOrDefault();
    
    
                    if(bids == null)
                    {
                        reportData.Add(new ReportData() {
                        month = i,
                        total = 0
                        });
                    }
                    else
                    {
                        reportData.Add(new ReportData()
                        {
                            month = i,
                            total = bids.total
                        });
                    }
                }
                catch(Exception ex)
                {
    
                }
    
    
            }
    

    【讨论】:

    • 它不起作用。似乎总计 = 出价。月份错误
    • 现在可以了,我做了一些修改。我接受了
    猜你喜欢
    • 2020-04-05
    • 2021-05-08
    • 2017-08-09
    • 2016-05-20
    • 2016-06-08
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多