私はEFでFoo genを作成しましたが、これは1対1であるはずのBarのナビゲーションプロパティを持っています。とにかく、私がFooをクエリすると、Barコレクションの最初と唯一のアイテムを取得し、これらを平坦なBiz Dtoにマッピングすることができます。コレクションの最初のアイテムをAutoMapperでマッピングする方法
var result = (from c in ctx.Foo
where c.Bar.Any(cs => cs.LOGINNAME == username && cs.PASSWORD == password)
select c).First();
次に、私のAutoMapper設定では、????のようなマップを作成します
public class Foo{
public ICollection<Bar> Bars { get; set; }
}
ソリューション:
var result = from item in FooCollection
select new { FirstBar = item.Bars.FirstOrDefault() };
FooCollection is IQueryable<Foo>
使用を
Mapper.CreateMap<Foo, Biz>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.CLIENTID))
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Bar.FirstOrDefault???))
は、与えられた、 スティーブン
CreateMap呼び出しが正しいように見えます。彼らはあなたのために働いていないのですか? – PatrickSteele
@PatrickSteeleこれは許可されていますか?明らかに、構文をクリーンアップする必要がありますが、はい、フィールド単位でカスタムマッピングを定義することができます:opt.MapFrom(src => src.Bar.FirstOrDefault?) –
(s => s.Bar.FirstOrDefault()); – PatrickSteele