查询ShowInDatabase为true的文章时遇类型转换异常,求解决
问题原因
你遇到的异常核心是类型不匹配:
- 使用
.FirstOrDefault()的查询返回的是单个PROIECT.Models.Article对象(或null),而视图中的foreach语句需要遍历的是可枚举集合(如IEnumerable<Article>),因此无法隐式转换,抛出异常。 - 正常运行的查询没有
.FirstOrDefault(),返回的是Articles表的完整集合(属于可枚举类型),所以能被foreach正确遍历。
解决方案
修改查询语句,移除.FirstOrDefault(),让查询返回符合条件的文章集合:
var articles = db.Articles.Include("Domain").Include("User") .Where(art => art.ShowInDatabase == true);
如果需要提前加载集合(避免EF延迟加载可能的问题),可以追加.ToList():
var articles = db.Articles.Include("Domain").Include("User") .Where(art => art.ShowInDatabase == true) .ToList();
修改后,ViewBag.Articles将是可枚举的文章集合,视图中的foreach语句就能正常遍历了。
内容的提问来源于stack exchange,提问作者Rhavish qi
相关产品推荐
相关产品推荐

