【发布时间】:2019-04-10 11:15:09
【问题描述】:
我正在尝试使用 Automapper 通过 ProjectTo IQueryable 将对象的字段与源的子集合映射如下:
var map2 = cfg.CreateMap<SourceModel, DestinationModel>();
map2.ForMember(fieldName, opt => opt.MapFrom(source => source.CustomFieldValues.FirstOrDefault(f => f.Name == fieldName).Value));
型号如下:
public class SourceModel
{
public IEnumerable<CustomFieldValue> CustomFieldValues { get; set; }
}
public class CustomFieldValue
{
public string Name { get; set; }
public string Value { get; set; }
}
public class DestinationModel
{
public string _CUSTOM_Test { get; set; }
public int _CUSTOM_Mynumber { get; set; }
public DateTime _CUSTOM_mydate { get; set; }
public bool _CUSTOM_mybool { get; set; }
public decimal _CUSTOM_numberdec { get; set; }
public int _CUSTOM_numint { get; set; }
public int _CUSTOM_numper { get; set; }
public DateTime _CUSTOM_mydate2 { get; set; }
public DateTime _CUSTOM_mydate3 { get; set; }
public DateTime _CUSTOM_mydate4 { get; set; }
public int _CUSTOM_mynum2 { get; set; }
}
预期结果: 由于该集合仅包含字符串值,但我需要根据字段名称映射到不同的数据类型。
实际结果: 但是当我尝试应用转换时,查询会抛出异常,因为 sql 查询不支持这种转换。
【问题讨论】:
-
目标模型是什么样的?
-
对不起,我错误地为源和目标写了相同的名称。我刚刚更新了描述。真的很感谢你!
标签: c# types expression automapper