2013-01-04 6 views
9

私はPictureGalleryクラスと一致する結果を返すLINQクエリを持っています。私は、次のエラーを取得私のViewModelしかしイムにロードする必要があります。これらのLINQ結果をViewModelクラスにロードするにはどうすればよいですか?

Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Collections.Generic.IEnumerable'. An explicit conversion exists (are you missing a cast?)

私はC#ではなく、新たなんです。私の "PictureGallery" viewmddelクラスに "Results"をキャストするにはどうすればいいですか?

ありがとうございます!

コントローラー:

//Test MediaID 
var MediaID = 75; 

//Query Results 
var Results = from g in DB.Galleries 
       join m in DB.Media on g.GalleryID equals m.GalleryID 
       where g.GalleryID == GalleryID 
       orderby m.MediaDate descending, m.MediaID descending 
       select new { g.GalleryTitle, Media = m }; 

//Create my viewmodel 
var Model = new GalleryViewModel 
{ 
    MediaID = MediaID, 
    PictureGallery = Results, //This line throws the error. 
    PictureCount = Results.Count() 
}; 

のviewmodels:

public class GalleryViewModel 
{ 
    public int? MediaID { get; set; } 
    public IEnumerable<PictureGallery> PictureGallery { get; set; } 
    public int PictureCount { get; set; } 
} 

public class PictureGallery 
{ 
    public int GalleryID { get; set; } 
    public string GalleryTitle { get; set; } 
    public int MediaID { get; set; } 
    public string MediaTitle { get; set; } 
    public string MediaDesc { get; set; } 
    public double Rating { get; set; } 
    public int Views { get; set; } 
} 

答えて

16

はあなたのよう問合せを修正してください:そして、あなたは= result.ToList() VARのリストを書くことができます

//Query Results 
var Results = from g in DB.Galleries 
       join m in DB.Media on g.GalleryID equals m.GalleryID 
       where g.GalleryID == GalleryID 
       orderby m.MediaDate descending, m.MediaID descending 
       select new PictureGallery { 
           GalleryID = g.GalleryId, 
           GalleryTitle = g.GalleryTitle, 
           MediaID = m.MediaID, 
           MediaTitle = m.MediaTitle, 
           MediaDesc = m.MediaDesc, 
           Rating = m.Rating, 
           Views = m.Views} ; 
+0

うんを確認することができます!ありがとう – Maddhacker24

2

あなたはIQueryable<anonymous>IEnumerable<PictureGallery>を設定しようとしています。あなたは正しい型に変換する必要があります。

var Model = new GalleryViewModel 
{ 
    MediaID = MediaID, 
    PictureGallery = Results 
     .Select(r => new PictureGallery { 
      GalleryID = r.Media.GalleryID, 
      GalleryTitle = r.GalleryTitle, 
      MediaID = r.Media.MediaID, 
      ... // and so on 
     }), 
    PictureCount = Results.Count() 
}; 
0

次に、このように表示するには リターンビュー(リスト);

あなたはViewModelには、クエリの実行後に結果の値を受け入れるようにプロパティを持つ単純なクラスです。この @model一覧

のようなあなたのビューで、それを受け入れることができます。

あなたはこれらの添付ファイル[LINQクエリ、ビューモデル、ビュー働いenter image description here][1]

関連する問題