You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:25:24