You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ查询获取表中每条记录的最新版本并存入列表

解决方案

核心逻辑为按名称分组后,将版本字符串转为System.Version类型比较大小,取每个分组内版本最高的条目即可,避免字符串直接比较出现的逻辑错误。

完整代码示例

// 你的原有查询
var packages = _readOnlyContext.Names.AsEnumerable().Select(x => new Names
{
    Name = x.Name,
    Version = x.Version.ToString()
});

// 新增分组取最新版本逻辑
var latestVersionList = packages
    .GroupBy(pkg => pkg.Name)
    .Select(group => group
        .OrderByDescending(pkg => Version.Parse(pkg.Version))
        .First()
    )
    .ToList();

说明

  • 如果存在不符合版本号规范的异常数据,可以将Version.Parse替换为Version.TryParse做容错处理,避免运行时抛出异常。
  • 如果你使用的是EF Core且数据量较大,可以尝试去掉AsEnumerable()将逻辑下推到数据库执行,需确认你使用的EF Core版本支持Version.Parse的SQL翻译,不支持的话保留原有内存处理逻辑即可。

内容的提问来源于stack exchange,提问作者tesla_coil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:36:05