我试图自动映射两个字典对象。要映射的类
public partial class Purchase
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PurchaseId { get; set; }
public int Quantity { get; set; }
public decimal? Amount { get; set; }
public decimal? Payment { get; set; }
public DateTime Date { get; set; }
public bool IsPaid { get; set; }
public int CustomerId { get; set; }
public int ProductId { get; set; }
public string User { get; set; }
public virtual Products Products { get; set; }
public virtual Customers Customer { get; set; }
}
要映射到的类
public partial class PurchaseModel
{
public int PurchaseId { get; set; }
public int Quantity { get; set; }
public decimal? Amount { get; set; }
public decimal? Payment { get; set; }
public DateTime Date { get; set; }
public bool IsPaid { get; set; }
public int CustomerId { get; set; }
public int ProductId { get; set; }
public string User { get; set; }
public virtual Products Products { get; set; }
public virtual Customers Customer { get; set; }
}
我的映射功能:
Mapper.Initialize(cfg => cfg.CreateMap<KeyValuePair<string, Purchase>, KeyValuePair<string, PurchaseModel>>()
.ConstructUsing(x => new KeyValuePair<string, PurchaseModel>(x.Key, x.Value)));
Linq声明:
x.Value
给出错误无法从Purchase
转换为PurchaseModel
,但很明显它们是相同的......
提供字典的Linq方法是:
public async Task<IDictionary<string, List<Purchase>>> GetDaysPurchases(DateTime dateTime)
{
var dayspurchases = await cstentity.Purchase.Where(p => p.Date == dateTime).GroupBy(i => i.Customer.Name).ToDictionaryAsync(pur => pur.Key, pur => pur.Select(i => i).ToList());
return new SortedDictionary<string, List<Purchase>>(dayspurchases);
}
直接添加Purchase
到PurchaseModel
的地图,其中包括:
cfg.CreateMap<Purchase, PurchaseModel>();