ऑब्जेक्ट की किसी एक प्रॉपर्टी की एक सरणी के लिए ऑब्जेक्ट्स की एक सूची में कनवर्ट करें


133

कहो कि मेरे पास निम्न वर्ग है:

public class ConfigItemType
{
    public string Name { get; set; }
    public double SomeOtherThing { get; set; }
}

और फिर मैं निम्नलिखित कक्षाओं की सूची बनाता हूं ( List<ConfigItemType> MyList)

अब मेरे पास निम्नलिखित हस्ताक्षर के साथ एक विधि है:

void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)

मैं मानों को स्ट्रिंग स्ट्रिंग सरणी के रूप में उपयोग MyListकरने के लिए कैसे फिट हो सकता हूं ?listGoesHereConfigItemType.Name

मुझे पूरा यकीन है कि लिनक यह कर सकता है .... लेकिन इस MyListपर एक selectविधि नहीं है (जो कि मैंने इस्तेमाल किया होगा)।

जवाबों:


278

आप क्या देख रहे हैं

MyList.Select(x=>x.Name).ToArray();

चूंकि Selectएक एक्सटेंशन विधि है कि नाम जोड़कर उस नाम स्थान को जोड़ना सुनिश्चित करें

using System.Linq

अपनी फ़ाइल के लिए - तो यह Intellisense के साथ दिखाई देगा।


यही मैंने भी सोचा था। लेकिन चयन अंतर्मुखता में नहीं दिखता है।
वैकनो

GAAAAAAA! मुझे याद आ रहा था लिनेक शामिल!
वैकनो

1
आपको System.Data.Linq का उपयोग करने की आवश्यकता है; उसके बाद BrokenGlass उत्तर का अनुसरण करें
Rami Shareef

1
मैं बेज़बान हूँ! ठीक है। मुझे यह पता लगाने में मदद करने के लिए नि: शुल्क प्रतिनिधि।
वैकनो

शानदार समाधान। मैं अपनी ऑब्जेक्ट-सूची में स्ट्रिंग "आईडी" का उपयोग करना चाहता था। सही काम किया List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Marty_in_a_Box

19

मुझे पूरा यकीन है कि Linq ऐसा कर सकता है .... लेकिन MyList के पास इस पर कोई चुनिंदा तरीका नहीं है (जो कि मैंने इस्तेमाल किया होगा)।

हां, LINQ ऐसा कर सकता है। यह बस है:

MyList.Select(x => x.Name).ToArray();

सबसे अधिक संभावना मुद्दा यह है कि आपके पास या तो एक संदर्भ नहीं है System.Core, या आप के लिए एक usingनिर्देश याद कर रहे हैं System.Linq



6

उन सभी के लिए जो .NET 2.0 के साथ अटके हुए हैं, मेरी तरह, निम्न तरीके की कोशिश करें (ओपी में उदाहरण के लिए लागू):

ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci) 
{ 
   return ci.Name; 
}).ToArray();

जहाँ configItemList आपकी सूची चर है।


.NET 2.0 भीड़ के लिए पोस्ट करने के लिए धन्यवाद!
वेबवार्ता
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.