Asp.net 在MVC中使用平面表格

Asp.net 在MVC中使用平面表格,asp.net,asp.net-mvc,linq,Asp.net,Asp.net Mvc,Linq,如果我有一个具有多个表的模型,并且我将这些表连接到控制器类中的一个平面表中,那么如何使视图能够访问平面表 例如,假设我的模型中有三个表(客户、订单、发票)。 订单通过外键(CustomerID)链接到客户,发票通过外键(OrderID)链接到订单 为了在一个平面表格中查看所有这些内容(列出所有客户,即使他们没有订单,列出所有订单,即使他们没有发票),我有以下匿名类型: var FlatTable = (from a in customers let CustomerID = a.ID join

如果我有一个具有多个表的模型,并且我将这些表连接到控制器类中的一个平面表中,那么如何使视图能够访问平面表

例如,假设我的模型中有三个表(客户、订单、发票)。 订单通过外键(CustomerID)链接到客户,发票通过外键(OrderID)链接到订单

为了在一个平面表格中查看所有这些内容(列出所有客户,即使他们没有订单,列出所有订单,即使他们没有发票),我有以下匿名类型:

var FlatTable = (from a in customers
let CustomerID = a.ID
join b in orders on a.ID equals b.CustomerID into ab
from b in ab.DefaultIfEmpty()
let OrderID = b.ID
join c in invoices on b.ID equals c.InvoiceID into ac
from c in ac.DefaultIfEmpty()
let InvoiceID = c.ID
select new {a.CustomerName, CustomerID, OrderID, b.ProductDescription, InvoiceID, c.InvoiceAmount});

return View(FlatTable.ToList());
那么在我看来(基于我的模型),我如何才能访问FlatTable。

IList model=(从客户中的
IList<ViewModel> model = (from a in customers
join b in orders on a.ID equals b.CustomerID into ab
from b in ab.DefaultIfEmpty()
join c in invoices on b.ID equals c.InvoiceID into ac
from c in ac.DefaultIfEmpty()
select new ViewModel() {CustomerName = a.CustomerName, CustomerID = a.ID, OrderID = b.ID, ProductDescription = b.ProductDescription, InvoiceID = c.ID, InvoiceMaount = c.InvoiceAmount}).ToList();
将a.ID等于b.CustomerID的订单中的b加入ab 从ab.DefaultIfEmpty()中的b开始 将b.ID上的发票中的c与c.InvoiceID合并到ac中 来自ac.DefaultIfEmpty()中的c 选择new ViewModel(){CustomerName=a.CustomerName,CustomerID=a.ID,OrderID=b.ID,ProductDescription=b.ProductDescription,InvoiceID=c.ID,InvoiceMaount=c.InvoiceAmount});
我想我找到了答案。我必须创建一个通用的ViewModel类,然后将匿名类型转换为ViewModel类的IEnumerable。