11

PictureGalleryクラスと一致する結果を返す LINQ クエリがあります。それらを自分にロードする必要がありますViewModelが、次のエラーが発生します。

タイプ 'System.Linq.IQueryable' を 'System.Collections.Generic.IEnumerable' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)

私はC#ではかなり新しいです。「結果」を「PictureGallery」viewmddel クラスにキャストするにはどうすればよいですか?

前もって感謝します!

コントローラ:

//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()
};

ビューモデル:

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

3 に答える 3

18

クエリを次のように言い換えます。

//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} ;
于 2013-01-04T22:51:30.783 に答える
2

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

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()
};
于 2013-01-04T22:49:35.690 に答える