2017-01-05 5 views
0

where節を使用してリンクされた子テーブルからデータを取り込むと仮定しているWeb APIを構築しています。 私は、熱心な読み込みでは成功しなかったが、where()でinclude()を使用しようとしました。関連するテーブルを持つエンティティを取得するC#でREST API2を使用する

public IQueryable<Market> getAllActive() 
    { 
     return db.Markets.Where(c => c.IsActive == true).Include(d => d.TravelCentres.Where(e => e.IsActive == true)); 

}

研究では、私は明示的なロードを使用しますが、それはデータ型をキャストする必要性について、エラーを保持推奨事項があります。私は現時点でアイデアを失い、何か助けに感謝します。私は「System.Data.Entity.Infrastructure.DbQuery 1[<>f__AnonymousType4 2 [可能System.String、System.Collections.Generic.IEnumerableにタイプ のオブジェクトをキャストすることができません。この例外メッセージを取得

private TravelCentresDbContext db = new TravelCentresDbContext();  
public IQueryable<Market> getAllActive() 
     { 
      //return db.Markets.Where(c => c.IsActive == true).Include(d => d.TravelCentres); 
      var result = db.Markets 
       .Where(c => c.IsActive == true) 
       .Select(p => new 
       { 
        Market = p.MarketId, 
        TravelCentres = p.TravelCentres.Where(x => x.IsActive == true) 
       }); 
      return (IQueryable<Market>)result; 
     } 

:ここに私のコードです1[TravelCentres.Models.TravelCentre]]]' to type 'System.Linq.IQueryable 1 [TravelCentres.Models.Market] '。

BLOCKQUOTE

答えて

1

resultそれは性質MarketTravelCentersと匿名型ののIQueryableだ、IQuerytable<Market>ではありません。したがって、(IQueryable<Market>)resultは無効なキャストです。 MarketTravelCentersのプロパティを持つモデルを作成し、それを返すことをお勧めします。

public class MyModel 
{ 
    public int MarketId { get; set; } 
    public IEnumerable<TravelCentre> TravelCentres { get; set; } 
} 

var result = db.Markets 
      .Where(c => c.IsActive == true) 
      .Select(p => new MyModel() 
      { 
       Market = p.MarketId, 
       TravelCentres = p.TravelCentres.Where(x => x.IsActive == true) 
      }); 

return (IQueryable<MyModel>)result; 
+0

ありがとう、ありがとうございました。出来た – Caesar

関連する問題