【问题标题】:how to group by parent and apply aggregate function on its childeren in LinQ Lambda如何在 LinQ Lambda 中按父级分组并对其子级应用聚合函数
【发布时间】:2019-09-07 06:59:45
【问题描述】:

我有一个 SQL 表,它通过 ParentId 列在其自己的架构中保存父子关系。还有一些其他表(Sale 等)通过 LocationId 列链接到它。我在根据二级父母(代码:xxxxx.xxxxx)对数据进行分组之后,然后将一些聚合函数(例如 SUM 和 COUNT)应用于其children 和其自身

查看 2 个地区(维多利亚、南澳大利亚)的总销售额的预期结果如下:

DisplayName      TotalSale
Victoria         $25,000
South Australia  $30,000

【问题讨论】:

    标签: sql linq lambda group-by


    【解决方案1】:

    我通过桌子上的代码栏设法解决了上述情况:

    var t = await _jobRepository.GetAll().Include(p => p.Applications)
                                               .Include(p => p.Location)
                                               .Include(p => p.InvoiceItem)
                                               .Where(p => p.PublishDate.HasValue)
                                               .Where(p => p.PublishDate.HasValue)
                                               .Where(p => p.PublishDate.Value.Year == Clock.Now.Year && p.PublishDate.Value.Month == Clock.Now.Month)
                                               .Where(p => p.Location.Code.Length >= 11)
                                               .GroupBy(p => p.Location.Code.Substring(0, 11), p => p, (parentLocation, job) => new { parentLocation, job })
                                               .Select(p => new RegionalStatCountryToBeChanged()
                                               {
                                                   RegionName = p.job.Select(q => q.Location).FirstOrDefault(q => q.Code == p.parentLocation).DisplayName,
                                                   NumberOfAds = p.job.Count(),
                                                   NumberOfApplications = p.job.SelectMany(q => q.Applications).Count(),
                                                   Sales = p.job.Select(q => q.InvoiceItem).Sum(q => q.Price)
                                               })
                                               .ToListAsync();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 2017-08-12
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      相关资源
      最近更新 更多