我正在开发API;如何设置linq查询以使用where条件返回最大值?
请参见下面的示例代码;我可以返回想要的字段的最大值,但是我需要在另一个列值等于某个值的地方对其进行过滤。
var lot = db.ShrinkLotData.Where(x => x.SupplierMfgLot.ToLower() == label.SupplierMfgLot.ToLower() && x.CatPattern.ToLower() == label.CatPattern.ToLower())
.SingleOrDefaultAsync();
if (lot.Result == null)
{
var lots = db.ShrinkLotData.Where(x => x.CatPattern.ToLower() == label.CatPattern.ToLower());
int internallot = db.ShrinkLotData.Max(x => x.InternalLotNum).Value;
return Ok(lot);
}
return Ok(lot);
}
对于内部批次,我想使用与lots语法相似的语法返回最大值。(其中catpattern等于特定值)
我俯瞰什么?
谢谢!
答案 0 :(得分:0)
如果我的理解正确,那么您基本上需要同时使用Where
和Max
,以便可以在where条件下选择最大值。
db.ShrinkLotData.Where(x => x.CatPattern.ToLower() == label.CatPattern.ToLower()).Max(x => x.InternalLotNum).Value;
更多信息:Composability of Queries:
...,您可以通过以下方式将它们组成方法语法 将方法调用链接在一起。这就是编译器所做的 使用查询语法编写查询时在幕后。和 因为查询变量不存储查询结果,所以您 可以随时对其进行修改或将其用作新查询的基础,甚至 在执行之后。