且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

自动映射器将多个属性映射到单个属性

更新时间:2022-02-24 23:03:33

是一个很好的建议,特别是如果您在其他地方有此模式.如果您正在寻找一个快速且肮脏的版本(也就是说,如果这是您唯一需要处理这种情况的地方),请尝试以下操作:

ValueResolver is a good suggestion, especially if you have this pattern elsewhere. If you're looking for a quick and dirty version (that is, if this is the only place you need to handle this sort of situation), try this:

Mapper.CreateMap<FormAnswer, FormAnswerModel>()
                .ForMember(d => d.Answer, o => o.ResolveUsing(fa =>
                    {
                        string answer = String.Empty;
                        if (fa.AnswerBool.HasValue)
                        {
                            return fa.AnswerBool.Value;
                        }

                        if(fa.AnswerCurrency.HasValue)
                        {
                            return fa.AnswerCurrency.Value;
                        }

                        if(fa.AnswerDateTime.HasValue)
                        {
                            return fa.AnswerDateTime;
                        }

                        if(!String.IsNullOrEmpty(fa.AnswerString))
                        {
                            return fa.AnswerString;
                        }

                        return answer;
                    }
                                                ));