返回DbQuery查看需要IEnumerable

时间:2012-08-09 08:56:02

标签: asp.net-mvc entity-framework-4

问题:

  

异常详细信息:System.InvalidOperationException:模型项   传入字典的类型   'System.Data.Entity.Infrastructure.DbQuery`1 [System.Int32]',但是这个   dictionary需要“migros.Models.State”类型的模型项。

我正在尝试做什么

我需要将以下linq查询的结果传递给View。

using (var db = new migros_mockEntities1())
        {
            var listOfIdeas = (from x in db.States select x.ID); 

            return View(listOfIdeas);
        }

视图需要IEnumerable,但似乎我无法将linq查询的结果强制转换为IEnumerable。 我正在使用实体框架数据库的第一种方法。

1 个答案:

答案 0 :(得分:1)

问题是您尝试从using块中返回ObjectQuery。 尝试实现对象集

var listOfIdeas = (from x in db.States select x.ID).ToList(); 

另外,不要忘记,处理上下文可能很棘手。 在您的情况下,var listOfIdeas = (from x in db.States select x.ID)只是一个查询,只有在您开始迭代它时才会运行。因此,如果已经处理了上下文,则会遇到异常,尝试使用listOfIdeas