根据另一个Table的Id显示相关记录

Show related records according to the Id from another Table

在我的 ASP.NET MVC 应用程序中,我使用视图模型创建了一个 HTML Table。

为此,我编写了一个查询,仅显示 ReOrderQty 为 !=0 且 AvaQty 小于 ReOrderQty.

的数据
List < RecognizedPartsViewModel > Reco = new List < RecognizedPartsViewModel > ();

var rData = (from i in db.InventoryMain 
             join p in db.PartCategory on i.PartCatogary equals p.Id 
             where i.ReOrderQty != 0 && i.AvaQty <= i.ReOrderQty && i.PartCatogary != 0
             select new RecognizedPartsViewModel {
             Id = i.Id,
             PartNo = i.PartNo,
             Description = i.PartDescription,
             Model = i.PartModel,
             AvaQty = i.AvaQty,
             ReOrderQty = i.ReOrderQty,
             PartCato = i.PartCatogary,
             ABCD = i.A_B_C_D_Category

             }).ToList();

到目前为止,table 数据正在根据查询显示。

还有另一个 table,我根据 PartId 存储订单。所以我想在同一 HTML Table.

的另一列上显示该数据

我可以通过加入 join ord in db.OrderTable on i.Id equals ord.PartNo_Id 来获取这些详细信息 但是当它出现时,结果只显示仅包含 OrderTable 的 PartNumbers。

这就是我提到的修改方式。

List < RecognizedPartsViewModel > Reco = new List < RecognizedPartsViewModel > ();

var rData = (from i in db.InventoryMain 
             join p in db.PartCategory on i.PartCatogary equals p.Id 
             join ord in db.OrderTable on i.Id equals ord.PartNo_Id 
             where i.ReOrderQty != 0 && i.AvaQty <= i.ReOrderQty && i.PartCatogary != 0

    select new RecognizedPartsViewModel {
        Id = i.Id,
            PartNo = i.PartNo,
            Description = i.PartDescription,
            Model = i.PartModel,
            AvaQty = i.AvaQty,
            ReOrderQty = i.ReOrderQty,
            PartCato = i.PartCatogary,
            ABCD = i.A_B_C_D_Category,
            PastOrders = "Order Qty: " + ord.OrderQty

    }).ToList();

所以,当这像我之前说的那样不显示每条记录时,它只显示 ordertable 中的记录。

那么我如何才能在同一个视图中显示这些 table 而不会丢失我的主要要求?

那就是

    left outer join
var rData = (from i in db.InventoryMain 
             join p in db.PartCategory on i.PartCatogary equals p.Id 
             join ord in db.OrderTable on i.Id equals ord.PartNo_Id into leftjoin 
             from order in leftjoin.DefaultIfEmpty()
             where i.ReOrderQty != 0 && i.AvaQty <= i.ReOrderQty && i.PartCatogary != 0

             select new RecognizedPartsViewModel {
                  Id = i.Id,
                  PartNo = i.PartNo,
                  Description = i.PartDescription,
                  Model = i.PartModel,
                  AvaQty = i.AvaQty,
                  ReOrderQty = i.ReOrderQty,
                  PartCato = i.PartCatogary,
                  ABCD = i.A_B_C_D_Category,
                  PastOrders = "Order Qty: " + order?.OrderQty ?? string.Empty
             }).ToList();

参考:Perform left outer joins