【发布时间】:2012-05-27 02:11:27
【问题描述】:
我正在寻找解决问题的最佳方法。
我只需要显示 3 个不同实体的名称,而不是其余信息。
实体是:
db.TR{TRID, ProjectID, TemplateID, version}db.Project{ProjectID, ProjectName}db.Template{TemplateID, TemplateName}
我想要在这样的网格中显示所有结果的最佳方法:
TRID - ProjectName - TemplateName - Version
我想知道您将如何处理模型、控制器(索引函数)和视图。
到目前为止,我的 View 函数如下所示:
public ViewResult Index()
{
var viewModel = from tr in db.TRs
join proj in db.Projects on tr.ProjectID equals proj.ProjectID
join templ in db.Templates on tr.TemplateID equals templ.TemplateID
orderby proj.ProjectName
select new
{
TRList = tr.TRID,
TemplateList = templ.TemplateName,
ProjectList = proj.ProjectName,
Version = tr.version
}
return View(viewModel); //Go in Index.cshtml
}
视图是:
@model IEnumerable <OnlineTR.WebUI.Areas.Admin.Models.TRManagerModel>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelitem => item.TRList);
</td>
<td>
@Html.DisplayFor(modelitem => item.ProjectList);
</td>
<td>
@Html.DisplayFor(modelitem => item.TemplateList);
</td>
</tr>
}
我正在尝试找到一种方法来使用仅使用我需要的 sql 请求。
如果你能告诉我如何使用 .include,那就太棒了。到目前为止,我已经尝试过了,但它不接受 () 中的 lambda 表达式,它需要一个字符串路径。 (可能缺少使用?)
非常感谢。亚历克斯。
【问题讨论】:
-
你的问题不是很清楚。你还没有完全定义你的问题是什么。您说“它不接受 () 中的 lambda 表达式”。什么没有? () 是什么?如果您有错误,请包括在内。
-
要将 Include() 与 lambda 表达式一起使用,您需要
using System.Data.Entity;。但尚不清楚它与您正在解决的问题有何关系。请澄清您的问题。 -
抱歉。我做了 db.TR.Include(x => x.Project) 编译时出错。它说它期待一个字符串路径作为参数。像 db.TR.Include("Project") 。这个东西建好了,但是返回 NULL。
标签: asp.net-mvc-3 ienumerable inner-join