从EF中使用LINQ的集合中选择最大版本

问题描述

| 我正在努力按TOP版本号筛选结果数组。以下提供了所有ProductApprover对象和不同的Version信息:
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);
}