2010-09-01 27 views
9

मुझे भ्रमित शीर्षक के बारे में खेद है, लेकिन मुझे अपनी समस्या को समझाने का एक बेहतर तरीका नहीं मिला।सी # किसी सूची से किसी फ़ील्ड से सूची प्राप्त करना

मेरे पास ऑब्जेक्ट्स की एक सूची है, myList, उन्हें 'MyObject' कहने दें।

Class MyObject 
{ 
    int MYInt{get;set;} 
    string MYString{get;set;} 
} 

List<MyObject> myList; 
... 

मैं एक अच्छा/कम/फैंसी रास्ता जहां मैं केवल 'MyString' संपत्ति का उपयोग कर रहा 'MyList', से एक List<string> बनाने के लिए देख रहा हूँ: वस्तुओं कुछ इस तरह दिखाई।

मैं इस myList.forEach का उपयोग कर() कर सकते हैं, लेकिन वहाँ है कि अगर एक अच्छे रास्ते

धन्यवाद मैं सोच रहा था !!

उत्तर

13
LINQ के साथ

:

var list = myList.Select(o => o.MYString); 

कि एक IEnumerable<string> देता है। एक List<string> बस ToList() के लिए एक कॉल जोड़ने पाने के लिए:

var list = myList.Select(o => o.MYString).ToList(); 

तब परिणामों पर पुनरावृति सामान्य रूप से:

var strings = from x in myList 
       select x.MYString; 

List<string> list = strings.ToList(); 

यह:

foreach (string s in list) 
{ 
    Console.WriteLine(s); 
} 
+1

यह उल्लेख के लायक है कि अगर सभी आप क्या करना चाहते इस पर पुनरावृति है, तो आप 'ToList की जरूरत नहीं है हो सकता है()'। इसका उपयोग केवल तभी करें जब आपको नई सूची या अनुक्रमणिका को संशोधित करने की आवश्यकता हो। – Timwi

1

यहाँ एकीकृत क्वेरी सिंटेक्स के उपयोग Ahmad's answer है भी लिखा जा सकता है:

List<string> list = (from x in myList 
        select x.MYString).ToList(); 
1

यदि आपके इनपुट और आउटपुट सूचियां List<T> दोनों हैं तो LINQ की कोई आवश्यकता नहीं है। इसके बजाय आप ConvertAll विधि का उपयोग कर सकते हैं:

List<string> listOfStrings = myList.ConvertAll(o => o.MYString); 
+0

अच्छी तरह से, मेरे मामले में, इनपुट और आउटपुट समान नहीं हैं। इनपुट सूची है और आउटपुट सूची है। कन्वर्ट करेगा सभी() अभी भी काम करते हैं? – edan

+0

"LINQ की कोई आवश्यकता नहीं है" का क्या अर्थ है? ऐसा नहीं है कि LINQ एक पूरी तरह से अलग पुस्तकालय या कुछ भी है, आप जानते हैं। चाहे आप 'कन्वर्टएल' या 'चयन करें' का उपयोग करें, कोई व्यावहारिक अंतर नहीं है। – Timwi

+0

@edan: हां, 'कन्वर्टअल' उपरोक्त मेरे उदाहरण के रूप में काम करेगा। – LukeH

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