首页 > 解决方案 > 在 Enity Framework Core 中分组和选择

问题描述

我有这个模型:

public class Evento: Base
{
    public string Pais { get; set; }
    public string Regiao { get; set; }
    public string Estado { get; set; }
    public string Evento{ get; set; }
    public double Valor { get; set; }
    public long Time { get; set; }
}

这是我正在处理的查询:

IQueryable<Evento> query = _context.Eventos;

        return query.AsNoTracking()
                     .GroupBy(s => new { s.Regiao, s.Pais })
                     .Select(ss => new Evento
                     {
                         Pais = ss.Key.Pais,
                         Regiao = ss.Key.Regiao,
                         Valor = ss.Sum(soma => soma.Valor),
                         Evento = ??
                     }).ToList();

我想要一个 Linq 查询来生成一个输出,它相当于如下所示的数据:

    ________________________________________________
   |   Pais    |   Regiao  |  Evento    |  Valor   |
   |- Argentina|- Oeste    |- Evento02  |- 2675.0  |
   |- Brasil   |- Sudeste  |- Evento01  |- 1800.0  |
   |- Brasil   |- Sul      |- Eventor02 |- 2700.0  |

我需要将字段“Evento”提取到结果列表中的 Evento-Object 中。我怎样才能做到这一点?

标签: c#.netlinqentity-framework-core

解决方案


您似乎想按 分组Evento,但由于某种原因,它未包含在您的GroupBy. 添加它,我们得到以下信息:

IQueryable<Evento> query = _context.Eventos;

return query.AsNoTracking()
             .GroupBy(s => new { s.Regiao, s.Pais, s.Evento })
             .Select(ss => new Evento
             {
                 Pais = ss.Key.Pais,
                 Regiao = ss.Key.Regiao,
                 Valor = ss.Sum(soma => soma.Valor),
                 Evento = ss.Key.Evento
             }).ToList();

推荐阅读