使用LINQ从两个表(join)获取数据,并使用MVC 5将结果返回到View
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用LINQ从两个表(join)获取数据,并使用MVC 5将结果返回到View相关的知识,希望对你有一定的参考价值。
我有两个表:INVENTORY和MINMAX,我想用join执行查询,如果在INVENTORY上达到最小数量和最大值,则在View中获取结果
在Controller中我有这个代码:
public ActionResult DetailsMinMax(string id)
{
var ListMin = (from i in INVENTORY
join m in MINMAX
on i.ITEM.Trim() equals m.ITEM.Trim()
select new
{
INVORG = i.INVORG,
ITEM = i.ITEM,
DESCRIPTION = i.DESCRIPTION,
ONHANDQTY = i.ONHANDQTY,
MINQTY = m.MINQTY,
MAXQTY = m.MAXQTY
}).Where(a => a.MINQTY >= a.ONHANDQTY).ToList();
var ListMAX = (from i in INVENTORY
join m in MINMAX
on i.ITEM.Trim() equals m.ITEM.Trim()
select new
{
INVORG = i.INVORG,
ITEM = i.ITEM,
DESCRIPTION = i.DESCRIPTION,
ONHANDQTY = i.ONHANDQTY,
MINQTY = m.MINQTY,
MAXQTY = m.MAXQTY
}).Where(a => a.MAXQTY <= a.ONHANDQTY).ToList();
return View ();
}
模型
public class MINMAX
{
public string MINMAXID { get; set; }
[Required]
public string INVORG { get; set; }
[Required]
public string ITEM { get; set; }
[Required]
public string DESCRIPTION { get; set; }
public string PRIMARYUOMCODE { get; set; }
public decimal MINQTY { get; set; }
public decimal MAXQTY { get; set; }
}
public class INVENTORY
{
public string INVO { get; set; }
public string INVORG { get; set; }
public string ITEM { get; set; }
public string DESCRIPTION { get; set; }
public decimal ONHANDQTY{ get; set; }
}
期望的输出:
从你的代码中,你不是很清楚你想要做什么但是作为一个疯狂的猜测我相信你使用Inventory表存储(项目/产品)信息,MinMax表用于存储每个现有项目的附加信息,如(该项目的最小/最大数量)。如果是这种情况,我可以给你以下建议:
您在表中有重复的数据,尝试通过将Inventory表的架构更改为(Id,Description,CurrentQuantity,InfoId)并将MinMax表命名为InventoryInfo或InventoryDetail来设置scheam(Id,ItemId)来解决这个问题。 ,MinQty,MaxQty)。注意:在这种情况下,您将在Inventory和InventoryInfo表之间建立一对一的关系,但这种关系并未得到很好的处理。最好的选择是删除第二个表(MINMAX)并在Inventory表中添加MinQty和MaxQty列。然后您的查询应如下所示:
var result = InventorySet.Where(x => x.CurrentQty == x.MinQty || x.CurrentQty == x.MaxQty).ToList();
return View(result)
PS:我认为这就是你想要做的。如果您还没有解决问题,请告诉我。
以上是关于使用LINQ从两个表(join)获取数据,并使用MVC 5将结果返回到View的主要内容,如果未能解决你的问题,请参考以下文章
Linq,EF Core - 按一个字段分组并使用其他字段从其他表中获取数据列表
这是在 .netCore 项目中使用 LINQ 查询连接两个表的正确方法吗?