【发布时间】:2015-04-27 13:17:24
【问题描述】:
我正在尝试显示查询结果,困难在于表中的每一行都将包含一个 Route 对象和一个 Visit 对象列表。我想将查询结果保存在 RouteViewModels 列表中:
public class RouteViewModel
{
public Route Route { get; set; }
public List<Visit> Visits { get; set; }
}
我运行查询并尝试保存结果:
var query =
from r in db.Routes
join v in visitList on r equals v.Route into visits
select new { RouteObject = r, VisitList = visits };
int i = 0;
foreach (var prodGroup in query)
{
vm[i].Route = prodGroup.RouteObject; //vm is an list of RouteViewModels.
j = 0;
foreach(var prodItem in prodGroup.VisitList)
{
vm[i].Visits[j] = prodItem;
j++;
}
i++;
}
我在对类似帖子的回答之后编写了 foreach 循环,但该行给了我错误:
无法创建“ApplicationDatabase.Visit”类型的常量值。此上下文仅支持原始类型或枚举类型
如何访问路线及其访问列表?
【问题讨论】:
-
该错误来自哪一行?
-
经过一番谷歌搜索后,问题可能在于您使用的是
visitList。 "You cannot join a set of data in the database with another set of data that is in memory." -
尝试将访问类型更改为 IEnumerable。的,尝试枚举 query.ToList() 而不是查询。这实际上会强制执行您的查询,因此您将所有数据都保存在内存中。
-
这个答案对你有帮助吗?
-
谢谢,使用 @KendallFrey 的评论完成了这项工作 - 我已经编写了一个单独的查询来获取
VisitList,我删除了它并将查询包含在上面的查询中。
标签: c# asp.net-mvc linq