Из того, что я прочитал об этой ошибке, f.E. здесь: Почему одни свойства объекта UnaryExpression, а другие MemberExpression? а>
Это происходит, когда объект ожидается, но возвращается тип значения, поэтому среда CLR должна упаковать это, что является еще одним (унарным) выражением.
Что меня действительно беспокоит, следующее AutoMapper-Mapping работает без проблем:
.ForMember(d => d.IndividualId, c => c.MapFrom(f => f.Individual.Id));
Это не работает только тогда, когда Mapping-Expression имеет другое выражение, которое возвращает Тип значения:
.ForMember(d =>
d.IndividualId, c => c.MapFrom(f =>
f.Individuals.First(d => d.Individual.Name == "Test").Id
));
Я написал этот пример, чтобы показать, что я хотел бы сделать, поэтому он может быть не на 100% подходящим? Я просто не могу отстать, почему первое выражение не вызывает этого исключения, потому что в обоих случаях должна произойти упаковка?
Редактировать
Ответ Итвана также работает, цель - просто устранить необходимость в упаковке. Это тоже работает примерно так:
m => m.MapFrom(f =>
f.Individuals.Where(ms => ms.Individual.Name == name)
.Select(i => i.Individual.Id).FirstOrDefault()
)
first
? - person Aron   schedule 12.06.2015Enumerable.First()
, какое поведение вы ожидали от него при обратном отображении? - person Aron   schedule 12.06.2015.First
. Конечно, это легко сделать эвристически для человека ... Но вы попробуйте запрограммировать эвристику на компьютер! - person Aron   schedule 15.06.2015