【问题标题】:Select maximum version from collection with LINQ in EF在 EF 中使用 LINQ 从集合中选择最大版本
【发布时间】:2011-05-24 07:59:27
【问题描述】:

我正在努力按 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);
        }

然后我想做一个查询,只选择最高版本编号的产品。请问有人可以帮助我吗?

提前致谢。

【问题讨论】:

    标签: linq entity-framework entity


    【解决方案1】:

    每个产品的顶级版本:

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

    【讨论】:

      【解决方案2】:
      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);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多