【发布时间】:2021-04-03 16:32:13
【问题描述】:
我有 2 个通过 linq 查询加入的表:
var catData = from c in _context.ProductCategory
join d in _context.ProductCategoryData
on c.Id equals d.ProductCategoryId into g
from gg in g.DefaultIfEmpty()
select new { c.Id, c.Name, gg.Path };
我想将此查询的结果作为模型传递给查看。问题是视图需要我传递的模型类型强烈指定。
我听说可以引入另一个包含 2 个表模型的类,然后将 2 个表加入这个类。但是,在我看来,它效率不高,因为我将始终拥有两个表中的所有列,而我只需要特定的列。
我想到的另一个选项 - 使用 ExpandoObject,如下所示:
dynamic model = new ExpandoObject();
model = catData.ToList();
return View("Categories", model);
然后像这样访问视图中的动态对象:
@model dynamic;
@foreach (var i in Model)
{
<img src="@i.Path">
<p>@i.Name</p>
}
但是这会引发模型对象不包含路径或名称的错误。
有没有其他方法可以解决这个问题?
【问题讨论】:
-
为什么不在查询之后再映射一次数据呢?只需在
catData上使用Select并将其映射到视图所需的对象 - 这将解决您的问题:强类型模型,也只是加载所需的数据
标签: c# entity-framework linq asp.net-core entity-framework-core