1.不支持枚举转换,使用匿名对象转换完后,再使用Linq转为list实体
.OrderBy((pr, prd, prc) => pr.ModifyTime, OrderByType.Desc).Select((pr, prd, prc) => new //匿名对象
{
RecordID = pr.RecordID,
TradeNo = pr.TradeNo,
TransactionID = pr.TransactionID,
Amount = pr.Amount,
BizType = pr.BizType,
CreateTime = pr.CreateTime,
RetriveCode = prd.RetriveCode,
ChannelCode = prd.ChannelCode,
CheckStatus = prc.CheckStatus,
CheckRemarks = prc.Remarks
})
.ToPageList(dto.PageIndex, dto.PageSize, ref totalNum).Select(it => new PaymentAgentDTO
{
RecordID = it.RecordID,
TradeNo = it.TradeNo,
TransactionID = it.TransactionID,
Amount = it.Amount,
BizType = it.BizType?.ToEnum<TransactionType>(),
CreateTime = it.CreateTime,
RetriveCode = it.RetriveCode,
ChannelCode = it.ChannelCode,
CheckStatus = it.CheckStatus?.ToEnum<ReconciliationStatus>(),
CheckRemarks = it.CheckRemarks
}).ToList();
2.对返回的结果额外处理:Mapper方法
.OrderBy((pr, prd, prc) => pr.ModifyTime, OrderByType.Desc).Select((pr, prd, prc) => new PaymentAgentDTO
{
RecordID = pr.RecordID,
TradeNo = pr.TradeNo,
TransactionID = pr.TransactionID,
Amount = pr.Amount,
// BizType = pr.BizType,
CreateTime = pr.CreateTime,
RetriveCode = prd.RetriveCode,
ChannelCode = prd.ChannelCode,
//CheckStatus = prc.CheckStatus,
CheckRemarks = prc.Remarks
})
.Mapper(it => new PaymentAgentDTO
{
Amount = it.Amount+10,
CheckRemarks=it.CheckRemarks.PadLeft(10)
})
3.这里主要是无法把数据库中查找的字段转换为枚举
在dto中我们还可以这样解决,定义字符串接收数据库中的枚举字段,再写一个Txt字段只有get接收强制转换的值
/// <summary>
/// 枚举
/// </summary>
public string CheckStatus { get; set; }
/// <summary>
/// 枚举说明:此自动转换,在netcore中可以通过修改json转换器全局修改
/// </summary>
public string CheckStatusText { get {
return CheckStatus?.ToEnum<CheckStatus >().GetDescription();
} }
--------------------------扩展-----------
匿名对换转实体,或者匿名List转实体List如何转?
automapper已经去掉DynamicMap匿名映射的方法
------------------附枚举方法
//定义枚举
public enum CheckStatus
{
/// <summary>
/// 已检查
/// </summary>
[Description("已检查")]
[StringValue("check_yes")]
check_yes = 1,
}
/// <summary>
/// 枚举字符串转换为对应的枚举对象(枚举code 转 枚举对象)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="code">枚举Code</param>
/// <returns></returns>
public static T ToEnum<T>(this string code)
{
var enumObj = (T)System.Enum.Parse(typeof(T), code, true);
return enumObj;
}
//获取枚举自定义的描述说明
public static string GetDescription(this Enum enumName)
{
string _description = string.Empty;
FieldInfo _fieldInfo = enumName.GetType().GetField(enumName.ToString());
DescriptionAttribute[] _attributes = _fieldInfo.GetDescriptAttr();
if (_attributes != null && _attributes.Length > 0)
_description = _attributes[0].Description;
else
_description = null;
return _description;
}