6

मैं अपनी डोमेन सेवा (वीएस 2010 सिल्वरलाइट बिजनेस एप्लिकेशन) में एक क्वेरी बनाने की कोशिश कर रहा हूं जो निरीक्षण से परिणाम देता है रीडिंग कि एक विशिष्ट मूल्य के रूप में बाहर आया था, मेरे डेटाबेस के रूप में स्थापित किया गया है:स्पष्ट रूप से प्रकार 'System.Collections.Generic.List <T>' to 'System.Linq.IQueryable <T>'

Locations 
    a) Inspections 
    b) InspectionItems 
     c) InspectionReadings  
    a) Areas 
    b) Inspections 
     c) InspectionItems 
      d) InspectionReadings 

तो, जैसा कि आप देख सकते हैं, वहाँ क्षेत्रों और स्थानों में स्थानों के लिए निरीक्षण रीडिंग कर रहे हैं।

public class StatusList 
    { 
     [Key] 
     [Editable(false)] 
     public Guid ID { get; set; } 

     public string LocationName { get; set; } 

     public DateTime LastInspectionDate { get; set; } 

     public string Status { get; set; } 
    } 

जो मैं पूछताछ के परिणामों वापस जाने के लिए उपयोग कर रहा हूँ: मैं एक POCO बुलाया नाम StatusList है

public IQueryable<StatusList> GetLocationStatus() 
    { 
     var status = (from location in this.ObjectContext.Locations 
         where location.InspectionReadings.Status == value 
         orderby a.DateTaken       
         select new LocationStatusList() 
         { 
          ID = a.ID, 
          LocationName = d.Name,        
         }).ToList<StatusList>(); 
     return status;    
    } 

दुर्भाग्य से, यह शीर्षक में त्रुटि लौटा रहा है और मुझे पता नहीं क्यों के रूप में है सूची स्पष्ट रूप से किसी सूची आइटम है और मैं परिणामों

.ToList<LocationStatusList> 
+2

आप 'GetLocationStatus' में' IQueryable' क्यों वापस लौटाएंगे? 'IQueryable' (अनौपचारिक रूप से बोल रहा है) दूरस्थ स्थानों में संख्यात्मक चीजों का प्रतिनिधित्व करने के लिए उपयोग किया जाता है। आपने अपने परिणाम के रूप में एक स्थानीय सूची बनाई है। यह बस एक 'IENumerable' है। – phg

+0

क्या LINQ से SQL या LINQ से Enities तक है? यह मेरे बाद के जैसा लगता है। –

+0

यह LINQ से Entitites है - क्षमा करें क्षमा करें! – xhedgepigx

उत्तर

18

समस्या ठीक है क्योंकि आपबुलाया गया है परिवर्तित कर दिया है। आपने घोषणा की है कि आप IQueryable<LocationStatusList> लौट रहे हैं, और List<T>IQueryable<T> लागू नहीं करता है।

विकल्प (एक चुनना):

  • ToList() के बाद ToList कॉल
  • बदलें वापसी प्रकार के IEnumerable<LocationStatusList>, IList<LocationStatusList> या संभवतः List<LocationStatusList>
  • कॉल AsQueryable() निकालें:

    ... as before ... 
    .ToList().AsQueryable(); 
    

ध्यान दें कि आपको ToList कॉल में टाइप तर्क की आवश्यकता नहीं है - यह वही है जो संकलक किसी भी तरह से अनुमान लगाएगा।

+0

मैं इस पोस्ट को पढ़ने से पहले तुरंत इस निष्कर्ष पर आया था! धन्यवाद - आपका जवाब बताता है कि मैंने इसे पहली जगह क्यों गलत कर दिया था। मुझे यकीन नहीं है कि मुझे ToList क्यों था()। – xhedgepigx