我有一个LINQ查询,它返回与我的PictureGallery
类匹配的结果。我需要将它们加载到我的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()
};
的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; }
}
答案 0 :(得分:17)
将您的查询改为:
//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} ;
答案 1 :(得分: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()
};
答案 2 :(得分:0)
然后你可以写 var list = result.ToList();
然后将它传递给这样的视图 return View(list);
您可以在此视图中接受它 @model List
其中ViewModel是一个简单类,其属性可在查询执行后接受结果值。
您可以查看这些附件[Linq查询,查看模型,查看enter image description here ][1]