Automapper 可以与 IQueryable 一起使用吗?
我有 2 个查询
IQueryable<V_ImageUpload> Query1;
IQueryable<V_ImageUpload> Query2;
Mapper.CreateMap<IQueryable<V_ImageUpload_WithReceiptBackup>, IQueryable<V_ImageUpload>>();
Query1 = Mapper.Map<IQueryable<V_ImageUpload_WithReceiptBackup>, IQueryable<V_ImageUpload>>(Query2);
发生的异常是:
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary
最佳答案
我没有使用过 AutoMapper(所以这是尝试一下的借口!),但是有 queryable extensions可用的。您的两个可查询项都是同一类型,所以我不太确定您想要实现什么,但也许这样的东西就是您想要的,它需要 IQueryable<V_ImageUpload_WithReceiptBackup>
并将其转换为IQueryable<V_ImageUpload>
:
IQueryable<V_ImageUpload_WithReceiptBackup> query1;
IQueryable<V_ImageUpload> query2;
// Only map the actual type, not the queryable types
Mapper.CreateMap<V_ImageUpload_WithReceiptBackup, V_ImageUpload>();
query2 = query1.Project().To<V_ImageUpload>();
.Project().To<V_ImageUpload>()
保持为IQueryable
,而Mapper.Map
最终会得到 List/IEnumerable
。我仅使用 LINQ to Objects 对此进行了测试,但希望它适用于 Entity Framework 或您正在使用的任何内容。
关于automapper - 从 Automapper 映射 IQueryable 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24245082/