LINQ查询,使用where子句返回最大值

时间:2020-03-24 14:21:44

标签: c# linq

我正在开发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等于特定值)

我俯瞰什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,那么您基本上需要同时使用WhereMax,以便可以在where条件下选择最大值。

db.ShrinkLotData.Where(x => x.CatPattern.ToLower() == label.CatPattern.ToLower()).Max(x => x.InternalLotNum).Value;

更多信息:Composability of Queries

...,您可以通过以下方式将它们组成方法语法 将方法调用链接在一起。这就是编译器所做的 使用查询语法编写查询时在幕后。和 因为查询变量不存储查询结果,所以您 可以随时对其进行修改或将其用作新查询的基础,甚至 在执行之后。

相关问题