首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按三个不同版本的部分分组和排序

按三个不同版本的部分分组和排序
EN

Stack Overflow用户
提问于 2020-06-15 20:07:30
回答 1查看 101关注 0票数 0

我有以下数据:

名称-市长版本-次要版本-构建版本

X-1-0-0

X-1-1-0

X-2-0-0

Y-0-2-3

Y-0-1-1

Z-4-4-4

现在,我希望获得最高版本号的市长>未成年人>构建分组按名称。

所以这里的输出应该是:

X-2-0-0

Y-0-2-3

Z-4-4-4

在林克怎么做?我试着按名字进行分组,然后按市长进行排序,然后按小号进行排序,然后按构建和接受第一个()进行排序,但是我不知道这里的语法.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 20:13:56

您可以在OrderByDescending语句中在Select语句中使用GroupBy之后的链式ThenByDescending调用。

代码语言:javascript
复制
class Version
{
    public string Name {get;set;} 
    public int MajorVersion {get;set;}
    public int MinorVersion {get;set;}
    public int BuildVersion {get;set;}
}

List<Version> versions = ...;
versions
    .GroupBy(x => x.Name)
    .Select(g => g.OrderByDescending(g => g.MajorVersion)
                    .ThenByDescending(g => g.MinorVersion)
                    .ThenByDescending(g => g.BuildVersion)
                    .First())
    .ToList();

或者尝试使用默认值元组比较器:

代码语言:javascript
复制
versions
    .GroupBy(x => x.Name)
    .Select(g => g.OrderByDescending(g => (g.MajorVersion, g.MinorVersion, g.BuildVersion))
            .First())
    .ToList();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62396148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档