我对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
});
答案 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无法帮助您。