2009-08-10 14 views
13

बस LINQ सीखना और मैं अपने परीक्षण प्रोजेक्ट में एक नौसिखिया रोडब्लॉक पर आया हूं। क्या आप समझा सकते हैं कि मैं क्या गलत कर रहा हूं?एक IQueryable <T> सूची <T> पर कनवर्ट करने के लिए कैसे करें?

public List<ToDoListInfo> retrieveLists(int UserID) 
{ 
//Integrate userid specification later - need to add listUser table first 
IQueryable<ToDoListInfo> lists = 
    from l in db.ToDoLists 
    select new ToDoListInfo { 
     ListID = l.ListID, 
     ListName = l.ListName, 
     Order = l.Order, 
     Completed = l.Completed 
    }; 

    return lists.ToList<ToDoListInfo>; 
}  

मैं एक त्रुटि कह हो रही है निम्नलिखित:

cannont विधि समूह 'ToList' गैर प्रतिनिधि प्रकार 'System.Collections.Generic.List' के लिए आप करने पर विचार करते कन्वर्ट विधि का आह्वान करें?

+1

सुराग में था, "आप विधि आह्वान करने का इरादा है?" –

उत्तर

27

तुम बस parantheses की जरूरत है:

lists.ToList<ToDoListInfo>();

इसके अलावा, आप प्रकार पैरामीटर की घोषणा करने की जरूरत नहीं है, यानी आप निम्नलिखित इस्तेमाल कर सकते हैं और टाइप-प्रणाली प्रकार पैरामीटर अनुमान कर करते हैं:

lists.ToList();

+1

टाइप नाम पैरामीटर घोषित करना वास्तव में एक * खराब * चीज़ हो सकता है, क्योंकि आपको 'सूचियों' के प्रकार पैरामीटर से मेल खाना है 'आईनेमेरेबल 'कार्यान्वयन, जो संकलन-समय त्रुटि उत्पन्न कर सकता है; बेहतर [टाइप-इनफरेंस] (http://geekswithblogs.net/sdorman/archive/2007/04/06/111034.aspx) क्या यह काम है – casperOne

+0

यदि मैं iqueryble संग्रह को एक अलग प्रकार की सूची में परिवर्तित करना चाहता हूं तो क्या होगा ? उदाहरण के लिए मान लें कि मेरे पास लगभग समान हस्ताक्षर के साथ दो वर्ग ए और बी है। अब मैं ए से डेटा पुनर्प्राप्त करता हूं और टाइप बी की एक सूची बनाना चाहता हूं, मैं यह कैसे कर सकता हूं? –

4

तुम बस ToList पर समापन कोष्ठक याद कर रहे हैं, होना चाहिए:

ToList(); 

या

ToList<ToDoListInfo>(); 
संबंधित मुद्दे