Mysql 来自2个不同表的嵌套foreach
下面是我要做的: 我有一个表包含一个标题(titletable),还有一个表包含文本(Text table),所以一个标题将包含多个文本,这就是我使用两个表的原因。 我可以列出表1,这是代码视图:Mysql 来自2个不同表的嵌套foreach,mysql,asp.net-mvc-4,Mysql,Asp.net Mvc 4,下面是我要做的: 我有一个表包含一个标题(titletable),还有一个表包含文本(Text table),所以一个标题将包含多个文本,这就是我使用两个表的原因。 我可以列出表1,这是代码视图: TitleTable TextTable ------------------- --------------- Id(int) Id (int) Title(string) TitleTableId (int)
TitleTable TextTable
------------------- ---------------
Id(int) Id (int)
Title(string) TitleTableId (int)
Text (string)
TitleOfText(int)
我不需要另一个foreach来带来我试过的标题文本
@foreach (var item in Model.TitleTable)
{
@item.Title
}
这会返回null,因为我不给任何Id返回,它只从视图模型中获取,而不是从控制器中获取,所以我如何才能到达文本,最后应该是这样的
@foreach (var item in Model.TitleTable)
{
@item.Title
foreach (var itemDesc in Model.Text.OrderBy(o => o.Id).Where(o => o.Id == item.Id))
{
@itemDesc.Text
}
}
这对我来说毫无意义:
Title 1
Text 1of title 1
Text 2of title 1
title 2
text 1 of title2
text 2 of title2
@foreach (var item in Model.TitleTable)
{
@item.Title
foreach (var itemDesc in Model.Text.Where(o => o.TitleTable== item.Id))
{
@itemDesc.Text
}
}
您正在将TitleTable.Id
值与TextTable.Id
值匹配吗?也许你的意思是:
.Where(o => o.Id == item.Id)
假设
TextTable.TextTableId
是TitleTable.Id
的外键,则这将是您要比较的值,以筛选该集合。item.ıd=表示titletableid,我尝试从模型中包含项的第一个foreach中获取。titletable@Jackal当前位置我只是试着换一下,看看是否有效。但答案仍然是一样的。您的命名方案有点难以遵循,但关键是您需要匹配外键。您的代码正在将Id
与Id
进行比较,但是您需要将Id
与TitleTableId
进行比较。是的,您是对的,它应该是TitleTableId==item.Id。但是我如何才能在viewmodel中获得foring键?@Jackal:那么,什么是Model.Text
?我假设它是TextTable
元素的集合。如果是其他内容,则需要指定。它的viewmodel包含Id、文本、标题Id,我试图从控制器获取它,但仍然为空。我将编辑该问题
.Where(o => o.TitleTableId == item.Id)