2011-11-21 34 views
5

ile koleksiyona nasıl eşlerim EF ile Foo gen'd bir nesneyim var, bir tane olan gezinme özelliğine sahiptir, ancak bire bir olmalıdır. Her neyse, bir Foo için sorguladığımda, Bar koleksiyonundan İlk ve tek öğeyi almak ve bunları düzleştirilmiş bir Biz Dto ile eşlemek gibi, bunu yapmayı nasıl yaparım? Benim AutoMapper Yapılandırması'ndaİlk öğeyi AutoMapper

Sonra
 var result = (from c in ctx.Foo 
        where c.Bar.Any(cs => cs.LOGINNAME == username && cs.PASSWORD == password) 
     select c).First(); 

Ben benzeyen bir harita oluşturmak istiyorum ????

public class Foo{ 
public ICollection<Bar> Bars { get; set; } 
} 

Çözüm:

var result = from item in FooCollection 
      select new { FirstBar = item.Bars.FirstOrDefault() }; 

FooCollection is IQueryable<Foo>

kullanın

 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???)) 

Stephen

+0

CreateMap çağrıları doğru görünüyor. Onlar senin için çalışmıyor mu? – PatrickSteele

+0

@PatrickSteele Buna izin verildiğine emin misiniz? opt.MapFrom (src => src.Bar.FirstOrDefault ???) –

+0

Açıkçası, sözdizimini temizlemeniz gerekir, ancak evet, alan başına temelinde özel bir eşleme tanımlamanıza izin verilir: opt.MapFrom (s => s.Bar.FirstOrDefault()); – PatrickSteele

cevap

6

Kullanım FirstOrDefault()

durumunda istisna vardır:

opt.MapFrom(src => src.Bar.FirstOrDefault()) 
0

, Verilen teşekkürler Böylece FirstOrDefault eşlemek zaman Bar koleksiyonu ...

Bence bunu yapmalıyım hiçbir ilgili Barlar vardır HTH

+0

Sorumu bir örnekle güncelledik. –