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

时间:2011-05-24 07:59:27

标签: linq entity-framework entity

我很难按TOP版本号过滤掉一系列结果。以下内容为我提供了所有ProductApprover对象和不同的版本信息:

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);
        }

然后,我想进行以下查询,仅选择最高版本编号的产品。请问有人能协助我吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

每种产品的最佳版本:

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();

答案 1 :(得分:0)

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);
}