6

我想在返回從檢查的結果我的域名服務(VS 2010 Silverlight業務應用程序)來創建一個查詢說出來爲特定值讀數,我的數據庫設置爲:無法隱式轉換類型「System.Collections.Generic.List <T>」到「System.Linq.IQueryable <T>」

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

所以,你可以看到,有下區域和地點的位置檢測讀數。我有一個POCO叫名字StatusList:

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; } 
    } 

裏面我是用返回查詢結果:

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 to SQL或LINQ to Enities嗎?這對我來說似乎是後者。 –

+0

這是LINQ的Entitites - mistagged對不起! – xhedgepigx

回答

18

問題恰恰因爲你叫ToList()。您宣稱您將返回IQueryable<LocationStatusList>,而List<T>未執行IQueryable<T>

選項(任選其一):

  • ToList()後刪除ToList呼叫
  • 更改返回類型IEnumerable<LocationStatusList>IList<LocationStatusList>或可能List<LocationStatusList>
  • 呼叫AsQueryable()

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

請注意,在ToList調用中不需要type參數 - 它與編譯器無論如何推斷的都是一樣的。

+0

我在閱讀這篇文章之前就已經得出這個結論!謝謝 - 你的回答解釋了爲什麼我把它錯了,它是第一個地方。我不知道爲什麼我有ToList()。 – xhedgepigx

相關問題