实体框架 - 在 EF 中使用 LINQ 从集合中选择最大版本



我正在努力按TOP版本号过滤一系列结果。下面为我提供了所有产品审批者对象和不同的版本信息:

foreach (ModelLib.ProductApprover app in products)
        {
            if(distinct.Where(p => p.Product.ID == app.Product.ID && p.Version == app.Version).FirstOrDefault() == null)
                distinct.Add(app);
        }

然后,我想执行以下查询,仅选择编号最高的产品。有人可以协助我进行这项工作吗?

提前谢谢。

每个产品的顶级版本:

var topVersions = products
    .GroupBy(arg => arg.ProductId)
    .Select(arg => new { ProductId = arg.Key, TopVersion = arg.Max(x => x.Version) })
    .ToList();

或具有顶级版本的产品:

var productsThatHaveTheTopVersion = products
    .Where(arg => arg.Version == products.Max(arg.Version))
    .ToList();
foreach (ModelLib.ProductApprover app in products)
{
   if(distinct.Where(p => p.Product.ID == app.Product.ID)
       .OrderByDescending(p=>p.Version)
       .FirstOrDefault( p=>p.Version == app.Version) != null)
            distinct.Add(app);
}

相关内容

  • 没有找到相关文章

最新更新