自动投影

时间:2015-04-27 17:40:14

标签: c# entity-framework automapper

我对Automapper投影有疑问。 我有实体:

public class SomeEntity
{
    public string Name { get; set; }

    public DateTime Date { get; set; }

    public string Price { get; set; }
}

并且dto:

public class SomeDto
{
    public string Name { get; set; }

    public int Month { get; set; }

    public string TotalPrice { get; set; }
}

如何使用automapper创建下一个投影

  var data = new List<SomeEntity>().AsQueryable()
        .GroupBy(p => new
        {
            p.Date.Month,
            p.Name
        }).Select(p => new
        {
            p.Key.Month,
            p.Key.Name,
            TotalPrice = p.Sum(entity => entity.Price)
        })
       .ToList()
       .Select(p => new SomeDto
        {
            Month = p.Month,
            Name = p.Name, 
            TotalPrice = p.TotalPrice
        });

1 个答案:

答案 0 :(得分:2)

您无法 - AutoMapper LINQ预测无法与您创建的中间匿名类型一起使用。在第一次选择中,您应该删除匿名类型:

var data = new List<SomeEntity>().AsQueryable()
    .GroupBy(p => new
    {
        p.Date.Month,
        p.Name
    }).Select(p => new SomeDto
    {
        Month = p.Key.Month,
        Name = p.Key.Name,
        TotalPrice = p.Sum(entity => entity.Price)
    })
   .ToList();

然后你不需要第二个选择。您已经手动投影,因此AutoMapper无法帮助您。