我有两个表:INVENTORY和MINMAX,我想用连接执行查询,如果在INVENTORY上达到最小数量和最大值,则在视图中获取结果
在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; }
}
期望的输出:
答案 0 :(得分:0)
从您的代码中,您不太清楚您尝试做什么,但作为一个疯狂的猜测我相信您使用Inventory表来存储(项目/产品)信息,而MinMax表用于存储额外的每个现有项目的信息,例如(该项目的最小/最大数量)。如果是这种情况,我可以给你以下建议:
您的表中有重复数据,尝试通过将Inventory表的架构更改为(Id,Description,CurrentQuantity,InfoId)并将MinMax表命名为 InventoryInfo 来解决此问题。或 InventoryDetail 以拥有scheam(Id,ItemId,MinQty,MaxQty)。 注意:在这种情况下,您将在广告资源和 InventoryInfo 表之间建立一对一的关系,但这些关系并未得到很好的处理。最好的选择是删除第二个表(MINMAX)并在Inventory表中添加MinQty和MaxQty列。然后您的查询应如下所示:
var result = InventorySet.Where(x => x.CurrentQty == x.MinQty || x.CurrentQty == x.MaxQty).ToList();
return View(result)
PS:我认为这就是你想要做的。如果您还没有解决问题,请告诉我。