2011-10-05 13 views
6

वर्गों के निम्नलिखित सेट को देखते हुए की एक सरणी के लिए एक संग्रह की एक संपत्ति मैप करने के लिए:Automapper का उपयोग पुरातन

class Parent 
{ 
    string Name { get; set; } 
    List<Child> children { get; set; } 
} 
class Child 
{ 
    short ChildId { get; set; } 
    string Name { get; set; } 
} 

class ParentViewModel 
{ 
     string Name { get; set; } 
     short[] ChildIds { get; set; } 
} 

जब मैं

Mapper.Map<Parent, ParentViewModel>(vm); 

फोन AutoMapper अनुवाद करने के लिए प्राप्त करने के लिए क्या यह संभव है Child.ChildId से ParentViewModel.ChildIds की सूची?

मैं कुछ इस तरह कर रही है की कोशिश की है:

Mapper.CreateMap<Child, short>() 
    .FromMember(dest => dest, opt => opt.MapFrom(src => src.ChildId)); 
Mapper.CreateMap<Parent, ParentViewModel>() 
    .FromMember(dest => dest.ChildIds, opt => opt.MapFrom(src => new[] {src.children})); 

लेकिन मैं एक त्रुटि कह कि यह कैसे के बाल एक int16 लिए वस्तुओं की एक सूची कन्वर्ट करने के लिए पता नहीं है मिलता है। कोई सुझाव?

उत्तर

12

सिर्फ ChildIds हड़पने के लिए एक LINQ क्वेरी का उपयोग करें:

.ForMember(d => d.ChildIds, o => o.MapFrom(s => s.Children.Select(c => c.ChildId).ToArray())); 
+0

मुझे पता था कि यह कुछ ऐसा है जैसे सरल होना चाहिए .. धन्यवाद !! – lambinator

+0

ओएमजी यह बहुत उपयोगी था! – starmandeluxe

संबंधित मुद्दे