2012-11-09 23 views
5

का उपयोग कर मैं निम्नलिखित कोड है जो काम नहीं कर रहा है का मिलान:एक समूहीकृत संग्रह AutoMapper

var groupedZones = this._zoneDataManager.GetZonesGroupedByCountry(); 
      IEnumerable<IGrouping<String, ZoneDTO>> zonesToReturn = Mapper.Map<IEnumerable<IGrouping<String, Zone>>, IEnumerable<IGrouping<String, ZoneDTO>>>(groupedZones); 

मैं निम्न अपवाद बार आ रही है:

\ "System.Collections.Generic मूल्य । सूची 1[SCGRE.Business.Model.ZoneDTO]\" is not of type \"System.Linq.IGrouping 2 [System.String, SCGRE.Business.Model.ZoneDTO] \ " और इस सामान्य संग्रह में नहीं किया जा सकता \ r \ nParameter नाम:। मूल्य

मुझे समझ नहीं नहीं क्यों यह शायद मैं अपवाद ठीक से समझ में नहीं आया एक IGrouping<String, T> में एक List<T> मैप करने के लिए कोशिश कर रहा है या ... लेकिन मैं मूल रूप से एक IEnumerable<IGrouping<String, Zone>> है और मैं करने के लिए IEnumerable<IGrouping<String, ZoneDTO>>

नोट यह मैप करना चाहते हैं कि मैं इस प्रकार ZoneDTO करने के लिए Zone से कोई नक्शा बना लेते:

Mapper.CreateMap<Zone, ZoneDTO>(); 

और उस वजह से दोनों वर्गों लगभग ठीक उसी गुण होते हैं है।

कोई विचार? (केवल Generic प्रकार)

IEnumerable, IEnumerable<T>, ICollection, ICollection<T>, IList, IList<T>, List<T>, Arrays 

AutoMapper करेंगे:

+0

मैंने इसे सरल बना दिया है और कुछ यूनिट परीक्षण चलाए हैं, और दुर्भाग्य से ऐसा लगता है कि IGrouping वर्तमान में समर्थित नहीं है। यदि आपको यहां से कोई समाधान नहीं मिलता है, तो आप [ऑटोमैपर मेलिंग सूची] (https://groups.google.com/forum/?fromgroups#!forum/automapper-users) – Mightymuke

उत्तर

4

arround कुछ काम करने के बाद, मुझे लगता है कि आप की तरह

Mapper.CreateMap<IEnumerable<IGrouping<String, Zone>>, IEnumerable<IGrouping<String, ZoneDTO>>>() 

विशिष्ट होना करने के लिए कुछ बात नहीं कर सकते, AutoMapper स्रोत संग्रह प्रकारों में शामिल हैं का समर्थन करता है IGrouping का समर्थन नहीं करते क्योंकि यह गैर-सामान्य संख्यात्मक प्रकार है।

इसके बजाय आप, निम्नलिखित सरल दृष्टिकोण कर सकते हैं

var zones = this._zoneDataManager.GetZones(); // Write new method in your ZoneDataManager 
var zoneDTOs = Mapper.Map<List<Zone>, List<ZoneDTO>>(zones); 
IEnumerable<IGrouping<String, ZoneDTO>> zonesToReturn = zoneDTOs.GroupBy(z => z.Country); 

कृपया this पढ़ें। उम्मीद है की यह मदद करेगा।

+1

@TaniaMaria भी आज़मा सकते हैं, क्या आपने इसके साथ प्रयास किया दृष्टिकोण? कृपया मुझे बताओ। –

+1

मेरा मानना ​​है कि IGrouping अब समर्थित है। मैं IGrouping से entityDto तक सफलतापूर्वक मानचित्रण करने में सक्षम हूं; और व्यक्तिगत मैपिंग कॉन्फ़िगर किए जाने पर ऑटोमैपर स्वचालित रूप से सूची <> सूची <> मैपिंग का समर्थन करता है –

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