2013-02-01 25 views
7

पर परिवर्तित नहीं कर सकता है, इस प्रश्न का शायद सैकड़ों बार उत्तर दिया गया है, लेकिन यहां जाता है।स्पष्ट रूप से प्रकार 'स्ट्रिंग' को 'System.Collections.Generic.List <string>'

private void PopulateStringDropdownList(List<ObjectInfo> listObject, 
             object selectedType = null) 
{ 
    List<string> listString = listObject.OrderBy(x => x.m_Type).ToString(); 
    for (int i = 0; i < listString .Count; i++) 
    { 
     for (int j = i + 1; j < listString .Count; j++) 
     { 
      if (String.Equals(listString [i], listString [j])) 
      { 
       listString.RemoveAt(j); 
      } 
     } 
    } 
    ViewBag.property1 = new SelectList(listString); 
} 

तो बुनियादी तौर पर मैं इस सूची मैं पैरामीटर में पारित में निहित प्रत्येक वस्तुओं की एक संपत्ति से आने वाले तार के साथ एक लटकती सूची को भरने के लिए कोशिश कर रहा हूँ:

मैं कोड के इस chunck है।

लेकिन कोड उस त्रुटि के कारण संकलित नहीं होता है जिसे आप वहां देख रहे हैं, और मुझे अभी तक समझ में नहीं आया है कि क्यों। कोई भी मदद करता है?

+1

कौन सा लाइन विफल हो रहा है? (और समय भविष्य questoins के लिए अपने कोड अपने आप को स्वरूपित करने के लिए ले सकते हैं।) –

+3

उपयोग ToList() के बजाय ToString की()। –

+0

_listString_ का कभी भी उपयोग नहीं किया जाता है। और क्या आप _listObject_ में डुप्लिकेट स्ट्रिंग को निकालने का प्रयास कर रहे हैं? –

उत्तर

11

यह समस्याग्रस्त लाइन है:

List<string> listString = listObject.OrderBy(x => x.m_Type).ToString(); 

ToString एक स्ट्रिंग देता है, और आप एक List<string> चर के लिए आवंटित करने के लिए कोशिश कर रहे हैं।

आप कुछ इस तरह करने की जरूरत है:

List<string> listString = listObject.OrderBy(x => x.m_Type) 
            .Select(x => x.ToString()) 
            .ToList(); 

यह बयान अपने listObject आदेश है कि आपके चाहते हैं, तो तार करने के लिए मूल्यों को कनवर्ट करते हैं, और अंत में एक List<string> को गणनीय कन्वर्ट करने के लिए गणनीय आदेश देगा।

+0

यह पूरी तरह से काम करता है। धन्यवाद! – hsim

2

मुझे लगता है कि आप ToString के बजाय ToList चाहते हैं।

इसके अलावा, अगर तुम सब करने की कोशिश कर रहे हैं डुप्लिकेट निकालने के है, तो आप बस LINQ का उपयोग करें और क्या कर सकते हैं इस:

इस कोड पर
List<string> listString = listObject.OrderBy(x => x.m_Type). 
    Select(x => x.ToString()).Distinct().ToList(); 
+0

ओह! वह भी कोशिश करेगा। – hsim

+0

listObject ऑब्जेक्टइन्फो की एक सूची है, स्ट्रिंग नहीं है, इसलिए listObject.OrderBy (x => x.m_Type) का उपयोग करें। चयन करें (l => l.ToString())। अलग()। ToList() – AndyClaw

+0

@AndyClaw धन्यवाद एंडी। सोचो कि जैसे ही आपने टिप्पणी की थी, मैं अपना जवाब संपादित कर रहा था। –

5

देखो:

List<string> listString = listObject.OrderBy(x => x.m_Type).ToString(); 

दाहिने हाथ की ओर अभिव्यक्ति के परिणाम पर ToString() पर कॉल कर रही है - जो स्वयं उपयोगी नहीं है, और इसके परिणामस्वरूप string होगा।

फिर आप string अभिव्यक्ति को List<string> के नए चर के लिए असाइन करने का प्रयास कर रहे हैं। यह काम नहीं करेगा।

मैं संदिग्ध तुम सिर्फ ToList बजाय ToString हैं:

List<string> listString = listObject.OrderBy(x => x.m_Type).ToList(); 
+0

ऐसा नहीं है कि मैं नहीं चाहता; बल्कि, यह काम नहीं करता है। मैंने पहले सोचा था कि ऐसा इसलिए था क्योंकि डेटा प्राप्त करने वाली सूची एक स्ट्रिंग सूची थी, लेकिन ... नहीं। – hsim

+0

@ हरवेसिमार्ड: आपका क्या मतलब है? जब आपने कोशिश की तो क्या असफल रहा? 'M_Type' फ़ील्ड का प्रकार क्या है? (कृपया भविष्य में अधिक विशिष्ट हो।) –

2

आप में अपने सभी कोड को आसान बनाने में कर सकते हैं:

List<string> listString = listObject.OrderBy(x => x.m_Type) 
            .Select(x => x.ToString()) 
            .Distinct() // Remove duplicated entries 
            .ToList(); 
ViewBag.property1 = new SelectList(listString); 
+0

मेरा कोड अब इस तरह दिखता है :) धन्यवाद! – hsim

+0

+1 आप ओपी नहीं, अंक के लायक हैं। –

1

अभी भी किया जाना सही करने का एक सा नहीं था।

private void PopulateStringDropdownList(List<ObjectInfo> listObjects, object selectedType = null) 

     { 
      List<string> listString = listObjects.OrderBy(x => x.m_Type) 
              .Select(x => x.m_Type.ToString()) 
              //.Distinct() 
              .ToList(); 
      ViewBag.cardType = new SelectList(listString); 
     } 

इस तरह सही मान पाया प्रकार की स्ट्रिंग और नहीं वस्तु के प्रकार है: यहाँ पूरा कोड है।

आपकी मदद के लिए सभी को धन्यवाद!int की

1

Convert सूची string की सूची:

List<string> listString = listObject.OrderBy(x => x.m_Type). 
Select(x =>x.ToString()).ToList();