2009-07-24 18 views
6

कक्षा के converting a class to another list का प्रश्न और उत्तर शांत है। MyData2 की सूची को MyData2 की दूसरी सूची में कैसे परिवर्तित करें? उदाहरण के लिए:लैम्ब्डा या LINQ का उपयोग करके कक्षा की एक सूची में कक्षा की एक सूची को बदलें या मानचित्र करें?

List<MyData> list1 = new List<MyData>(); 
// somewhere list1 is populated 
List<MyData2> list2; 
// Now I need list2 from list1. How to use similar LINQ or Lambda to get 
list2 = ... ? 

यहाँ मैं यह कोशिश की, लेकिन मुझे पूरा कोड को समझ नहीं सकता:

list2 = (from x in list1 where list1.PropertyList == null 
    select new MyData2(null, x.PropertyB, x.PropertyC). 
    Union (
     from y in list1 where list.PropertyList != null 
     select new MyData2(/* ? how to loop each item in ProperyList */ 
       y.PropertyB, y.PropertyC) 
    ).ToList(); 

जहां MyData2 (स्ट्रिंग, स्ट्रिंग, स्ट्रिंग) की तरह एक ctor है।

उत्तर

25

यदि दो प्रकार अलग हैं, तो आप नई सूची में मानचित्र के लिए एक ही चयन का उपयोग करेंगे।

list2 = list1.Select(x => new MyData2() 
            { 
            //do your variable mapping here 
            PropertyB = x.PropertyB, 
            PropertyC = x.PropertyC 
            }).ToList(); 

संपादित जोड़ने के लिए:

अब जब आपने अपने प्रश्न बदल दिया है। आप जो कुछ करने की कोशिश कर रहे हैं उसे ठीक करने के लिए आप ऐसा कुछ कर सकते हैं।

list2 = list1.Aggregate(new List<MyData2>(), 
       (x, y) => 
       { 
        if (y.PropertyList == null) 
        x.Add(new MyData2(null, y.PropertyB, y.PropertyC)); 
        else 
        x.AddRange(y.PropertyList.Select(z => new MyData2(z, y.PropertyB, y.PropertyC))); 

         return x; 
       } 
      ); 
+0

मैं अपने कोड, आंशिक एक अपडेट किया गया। इस मामले में, मुझे संपत्ति सूची पर विचार करना है शून्य या नहीं। वहां कैसे मानचित्र करें? –

+0

मुझे यह पसंद है। वैसे, मेरे आंशिक कोड में, मैंने संघ का उपयोग करने की कोशिश की और मुझे Rob Elliott का उपयोग कर काम मिल गया। कुल और संघ के बीच क्या अंतर है? –

3
list2 = list1.ConvertAll<MyData>(a => a.MyConversion()) 
+0

MyConversion() के लिए लैम्ब्डा अभिव्यक्ति के बारे में विस्तार से इनलाइन कैसे करें? –

+0

मैं आपका पॉइंट देखता हूं। MyConversion() MyData2 कक्षा में परिभाषित एक विधि है। –

+0

वास्तव में, कनवर्ट सभी काम नहीं कर रहा है। मैं list1 का उपयोग करता हूं। चयन करें (..)। ToList() और कोई संकलन त्रुटि नहीं। क्या वह सही है? –

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