2

メッセージを含むチケットがあります。また、チケット モデルには、null 値を許容できるメッセージである resolutionMessage が含まれています。

私はそのようなことをしたい:

Mapper.CreateMap<Ticket, TicketModel>()
.ForMember(dest => dest.ResolutionMessage, opt => opt.MapFrom(src => 
            {

                if (src.ResolutionMessageID != null)
                {
                    src.Messages.Where(m => m.MessageID == src.ResolutionMessageID);
                }
                else
                    // Return null;
                }
                ));

2 回目の試行:

            .ForMember(dest => dest.ResolutionMessage, opt =>
                {
                     (opt.MapFrom(src => if(src.ResolutionMessageID != null) 
                      opt.MapFrom(src => src.Messages.Where(m => m.MessageID == src.ResolutionMessageID));
                else
                    opt => opt.Ignore();
                }

                );

何か案は?

4

1 に答える 1

2

Null 許容型であると見なしResolutionMessageIDます。次のようなものを試すことができます。

.ForMember(dest => dest.ResolutionMessage, opt => opt.MapFrom(src => src.ResolutionMessageID.HasValue ? src.Messages.Where(m => m.MessageID == src.ResolutionMessageID) : null));

null 許容型ではなく、null を許可する場合:

.ForMember(dest => dest.ResolutionMessage, opt => opt.MapFrom(src => src.ResolutionMessageID != null ? src.Messages.Where(m => m.MessageID == src.ResolutionMessageID.Value) : null));

opt.MapFrom()またはまたはを使用opt.Ignore()しますが、両方を使用する方法はありません。マップの条件がルールを受け入れない場合は、null 値を保持する方がよいと思います。使用するopt.Ignore()と、オブジェクトの変換時にプロパティが無視されます。

于 2013-08-09T19:40:30.763 に答える