簡體   English   中英

AutoMapper - 條件映射

[英]AutoMapper - Conditional Mapping

我環顧四周,找不到我的問題的答案。 我要做的是有條件的 map 目的地 object (不是字段/屬性,對象)。 換句話說,是這樣的:

public class Source
{
    public int Id {get; set;}
    public string Flag {get; set;}
}
public class Destination
{
    public int Id {get; set;}
}

var sources = new List<Source> 
                  { 
                      new Source{Flag = "V", Id = 1},
                      new Source{Flag = "B", Id = 2} 
                  };

var destinations = Mapper.Map<List<Source>, List<Destination>>(sources);

destinations.Count.ShouldEqual(1);
destinations[0].Id.ShouldEqual(2);

有誰知道如何配置類型映射? 我正在尋找類似的東西:

Mapper.CreateMap<Source, Destination>()
    .SkipIf(src => src.Flag != "B");

我只是在似乎支持這一點的配置選項中看不到任何東西。 任何幫助將非常感激。 提前致謝。

AFAIK 目前沒有任何內置功能可讓您實現這一目標。 您可以執行以下操作:

var destinations = Mapper.Map<List<Source>, List<Destination>>(
    sources.Where(source => source.Flag == "B")
);

這不是很好,因為您實際上最終自己進行了映射....但是對於特殊情況可以,並且允許內部包含映射邏輯....

 config.CreateMap<Source, Destination>()
            .AfterMap((source, dest) =>
            {
                 if (source.Flag == "B")
                 {
                     //do stuff
                 }
            });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM