我有以下观点:
<tr>
<% foreach (var game in (IEnumerable<Game>)ViewData["Game"])
{ %>
<td>
<input type="checkbox" name="selectedObjects" value="<%=game.Id%>" />
</td>
<td>
<%=game.GMTDateTime%>
</td>
<td>
<%=game.HomeTeamId%>
</td>
<td>
<%=game.AwayTeamId%>
</td>
<td>
<%=game.Venue%>
</td>
</tr>
除HomeId和AwayId外,所有数据都显示OK。这两个字段链接到另一个名为team的表,HomeTeamId和AwayTeamId中的每个Id都与Team表中的记录相关,每个id都有一个“Name”。我的问题是如何显示Team表中的“Name”而不是显示的Id字段。
控制器显示:
ViewData["Game"] = dc.Games.GetGames();
我在linq中使用的查询是:
public static IEnumerable<Game> GetGames(this Table<Game> source)
{
return from c in source
orderby c.GMTDateTime
select c;
}
答案 0 :(得分:2)
假设您已在模式中定义了关系,这应该可以工作:
<td>
<%=game.Team.Name%>
</td>
<td>
<%=game.Team1.Name%>
</td>
由于Team表中有多个FK,因此您将看到Team,Team
和Team1
(或类似)的两个属性。您需要通过查看生成的LINQ代码或通过反复试验来确定哪个是哪个,即观察输出。
通常使用部分类我会创建其他属性,使用更好的名称公开Team对象,以明确它们所用的FK。