自动映射器投影
Automapper projection
我对 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; }
}
如何使用自动映射器创建下一个投影
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
});
您不能 - AutoMapper LINQ 投影不会真正与您创建的中间匿名类型一起使用。在您的第一个 Select 中,您应该删除匿名类型:
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();
那你不需要第二个Select。您已经在手动投影,因此 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; }
}
如何使用自动映射器创建下一个投影
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
});
您不能 - AutoMapper LINQ 投影不会真正与您创建的中间匿名类型一起使用。在您的第一个 Select 中,您应该删除匿名类型:
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();
那你不需要第二个Select。您已经在手动投影,因此 AutoMapper 不会在这方面帮助您。