我有以下数据:
名称-市长版本-次要版本-构建版本
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
在林克怎么做?我试着按名字进行分组,然后按市长进行排序,然后按小号进行排序,然后按构建和接受第一个()进行排序,但是我不知道这里的语法.
发布于 2020-06-15 20:13:56
您可以在OrderByDescending语句中在Select语句中使用GroupBy之后的链式ThenByDescending调用。
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();或者尝试使用默认值元组比较器:
versions
.GroupBy(x => x.Name)
.Select(g => g.OrderByDescending(g => (g.MajorVersion, g.MinorVersion, g.BuildVersion))
.First())
.ToList();https://stackoverflow.com/questions/62396148
复制相似问题