6

検査結果を返すドメインサービス(VS 2010 Silverlight Business Application)でクエリを作成しようとしています。あなたが見ることができるよう、地域や場所の下の場所の検査測定値があり、'System.Collections.Generic.List <T>'を暗黙的に '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 to SQLまたはLINQ to Enitiesはありますか?私にとっては後者のようです。 –

+0

LINQ to Entitites - ミスマッチごめんなさい! – xhedgepigx

答えて

18

を変換しました。あなたはIQueryable<LocationStatusList>を返すと宣言しました。List<T>IQueryable<T>を実装していません。

オプション(いずれかを選択):

  • IEnumerable<LocationStatusList>ToList()IList<LocationStatusList>または多分List<LocationStatusList>
  • コールAsQueryable()ToListコール

  • 変更戻り値の型を削除します。

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

ToList呼び出しでtype引数は必要ありません。コンパイラが推論するのと同じものです。

+0

私はこの記事を読む直前にこの結論に達しました!ありがとう、あなたの答えは私が最初に間違っていた理由を説明しています。なぜ私はToList()を持っていたのか分かりません。 – xhedgepigx

関連する問題