如何在视图中将2个不同表中的数据显示为一个列表

时间:2019-02-25 18:01:16

标签: c# asp.net-mvc razor

我有一个页面,我想在其中显示图像滑块内不同表中的图像。但是我的图像却排成一行显示。有没有一种方法可以将来自两个不同表的列表组合到一个视图中。

int size = 10;
int myArray[size];

size = 20;

DB table

1 个答案:

答案 0 :(得分:2)

如果您的属性是同一类型,则可以将它们串联:

@foreach (var table1 in Model.table1.Concat(Model.table2))

如果它们不是同一类型,那么您需要首先将它们投影为通用类型。可能很简单:

@foreach (var table1 in Model.table1.Select(t => t.imageurl).Concat(Model.table2.Select(t => t.imageurl)))

从风格上讲,理想情况是模型或控制器(而不是视图)中发生这种情况。视图实际上应该只绑定到模型上的属性,而无需操纵它们。

例如,您可以将计算出的属性添加到模型中:

public IEnumberable<SomeType> Tables
{
    get { return table1.Contact(table2); }
}

然后在您的视图中,您将循环遍历Model.Tables。或者,如果您实际上只 一个表列表,则您的模型应该只有一个表列表,并且在填充模型时应该合并不同的数据源。但是,我们对此进行的研究越多,此时我们就必须对您的数据模型做出更多的假设。