Как сопоставить int с описанием enum с помощью AutoMapper во время запрашиваемой проекции?

Вот метод расширения enum, чтобы получить его атрибут description.

public static string GetDescription(this Enum enumeration)
{
    if (enumeration == null)
        throw new ArgumentNullException();

    var value = enumeration.ToString();
    var type = enumeration.GetType();
    var descriptionAttribute =
        (DescriptionAttribute[]) type.GetField(value).GetCustomAttributes(typeof (DescriptionAttribute), false);

    return descriptionAttribute.Length > 0 ? descriptionAttribute[0].Description : value;
}

Вот исходный объект:

public class Account {
    public int AccountId {get;set;}
    public int AccountStatusId {get;set;}
}

Вот перечисление:

public enum AccountStatus {
    [Description("N/A")]
    None,
    [Description("OPEN")]
    Open,
    [Description("CLOSED")]
    Closed,
    [Description("BAD CREDIT")
    Problem
}

Вот объект назначения:

public class GetAccountResponse {
    public int AccountId {get;set;}
    public string Status {get;set;}
}

Вот моя попытка отобразить (используя последнюю нестатическую версию Autopper). Помните, что это во время запрашиваемой проекции EF.

_config = new MapperConfiguration(cfg => cfg.CreateMap<Account, GetAccountsResponse>()
    .ForMember(dest => dest.Status,
        opts => opts.MapFrom(src => ((AccountStatus) src.AccountStatusId).GetDescription())));

Вот проекция, где запрос являетсяIQueryable<Account>:

query.ProjectToList<GetAccountResponse>(_config);

Это исключение, которое я получаю:

Не удается разрешить это в Queryable Expression

Ответы на вопрос(1)

Ваш ответ на вопрос