6

türüne dolaylı olarak dönüştürülemiyor Etki alanı hizmetimde (VS 2010 Silverlight Business Application) sorgudan sonuç döndüren bir sorgu oluşturmaya çalışıyorum Gördüğünüz gibi, alan ve konumlar altındaki yerler için muayene okumalar vardır,'System.Collections.Generic.List <T>' türünün 'System.Linq.IQueryable' <T> '

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

Yani: belirli bir değer olarak çıktı okumalar, benim veritabanı olarak ayarlandı. Ben sorgunun sonuçları döndürmek için kullanıyorum

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

: Bir POCO denilen isim StatusList sahip

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

ne yazık ki, başlığında hatayı döndürüyor ve neden hiçbir fikrim yok liste açıkça bir liste öğesi olup seniaradım nedeniyle sorun tam da olduğunu sonuçlarını

.ToList<LocationStatusList> 
+2

Neden GetLocationStatus' 'bir' IQueryable' dönecekti? “IQueryable” (uzak diyarda), uzak yerlerde sayısız şeyi temsil etmek için kullanılır. Sonuç olarak yerel bir liste oluşturdunuz. Bu sadece bir 'IEnumerable'. – phg

+0

LINQ o Enities to SQL veya LINQ mı? İkincisi bana benziyor. –

+0

O müteşebbis için LINQ var - üzgünüm mistagged! – xhedgepigx

cevap

18

dönüştürdük. Sen IQueryable<LocationStatusList> dönen konum ve List<T>IQueryable<T> uygulamıyor beyan ettik.

Seçenekler (seçeceğiz):

  • ToList() sonra ToList çağrı
  • değiştir dönüş tipi IEnumerable<LocationStatusList>, IList<LocationStatusList> ya da muhtemelen List<LocationStatusList>
  • Çağrı AsQueryable() kaldırın:

    ... as before ... 
    .ToList().AsQueryable(); 
    
o derleyici zaten anlaması aynısını birisidir - ToList çağrısında tür bağımsız değişkeni gerekmez

Not.

+0

Ben bu yazıyı okumak hemen önce bu sonuca varmıştı! Teşekkürler - cevabınız ilk etapta neden yanlış yaptığımı açıklıyor. Ben neden ToList() vardı emin değilim. – xhedgepigx

İlgili konular