2009-09-04 22 views
14

एक कॉलम linq क्वेरी को स्ट्रिंग सरणी में परिवर्तित करने का सबसे प्रभावी तरीका क्या है?linq क्वेरी को स्ट्रिंग सरणी में कनवर्ट करें - सी #

private string[] WordList() 
    { 
     DataContext db = new DataContext(); 

     var list = from x in db.Words 
        orderby x.Word ascending 
        select new { x.Word }; 

     // return string array here 
    } 

नोट - x.Word एक स्ट्रिंग

उत्तर

30

मैं लैम्ब्डा शैली पसंद करते हैं, और तुम सच में अपने डेटा संदर्भ निपटान किया जाना चाहिए।

private string[] WordList() 
{ 
    using (DataContext db = new DataContext()) 
    { 
     return db.Words.Select(x => x.Word).OrderBy(x => x).ToArray(); 
    } 
} 
+2

मैं जीसी को कसरत देना चाहता हूं! - बस मजाक कर रहा है - यह एक बहुत अच्छा मुद्दा है। धन्यवाद। –

+0

बहुत बढ़िया समाधान! –

4

है अगर आप के बजाय लैम्ब्डा वाक्य रचना में इसे टाइप आप toArray विधि के साथ थोड़ा आसान यह कर सकते हैं:

string[] list = db.Words.OrderBy(w=> w.Word).Select(w => w.Word).ToArray(); 

या भी कम:

return db.Words.OrderBy(w => w.Word).Select(w => w.Word).ToArray(); 
+0

दोनों त्रुटि दिखा सकते हैं - परोक्ष प्रकार कनवर्ट नहीं कर सकता 'शब्द []' 'स्ट्रिंग []' –

+0

यह सही किया, याद .Word सा – Robban

7

कैसे के बारे में:

return list.ToArray(); 

यह अनुमान लगा रहा है कि x.Word वास्तव में एक स्ट्रिंग है।

नहीं तो आप की कोशिश कर सकते:

return list.Select(x => x.ToString()).ToArray(); 
+0

पहला तरीका यह त्रुटि देता है के लिए - परोक्ष प्रकार 'AnonymousType # 1 कनवर्ट नहीं कर सकता []' तार[]'। दूसरी विधि काम करता है! धन्यवाद! –

+0

अपने चयन में नया {} छोड़ें और आपको अनाम प्रकार को अनपैक नहीं करना पड़ेगा, आपके पास केवल एक स्ट्रिंग होगी (माना जाता है कि शब्द एक वर्ण स्तंभ है)। – tvanfosson

+0

@tvanfosson, "अज्ञात प्रकार * को अनपैक करने" का क्या अर्थ है? (मुझे लगता है कि इस उत्तर में एक संपादन किया गया है, क्योंकि अब मुझे कोई नया {} 'नहीं देखा गया है।) – kdbanman

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