das Datum der Annahme ist NULL festlegbare Datetime:AutoMapper: komplex, wenn else-Anweisung in ForMember
Mapper.CreateMap<SomeViewModels, SomeDTO>()
.ForMember(dest => dest.Date,
opt => opt.MapFrom(src =>
{
DateTime? finalDate = null;
if (src.HasDate == "N")
{
// so it should be null
}
else
{
endResult = DateTime.Parse(src.Date.ToString());
}
return finalDate;
}));
Der Fehler, den ich bekam, war: „Fehler 30 A Lambda-Ausdruck mit einer Aussage Körper kann nicht auf einen Ausdruck Baum umgewandelt werden“
Natürlich bin ich voll und ganz bewusst, dass ich die Abfrage vereinfachen kann wie:
Mapper.CreateMap<SomeViewModels, SomeDTO>()
.ForMember(dest => dest.Date,
opt => opt.MapFrom(src => src.HasDate == "N" ? null : DateTime.Parse(src.Date.ToString())));
Aber was, wenn ich darauf bestehen, die Struktur des ersten Beispiels zu behalten, weil ich noch komplizierter, wenn sonst Aussagen habe, dass die zweites Beispiel kann nicht oder zumindest nicht gut lesbar sein?
Also muss ich die anderen Eigenschaften Mapping im Konverter, obwohl der Rest sind einfach Mapping definieren? –
@Sum kurz - ja. aber Sie können es mit AutoMapper in Converter Ignorieren diese Eigenschaft zuordnen und es manuell einstellen :) welcher Typ ist Ihre Eigenschaft Date? – Backs
Es ist ein Nullable DateTime, vergessen, das in meiner Frage zu erwähnen. Könnten Sie dieses Beispiel auch in Ihre Antwort einfügen (mit Autoadapter in Converter verknüpfen)? Vielen Dank. –