gpt4 book ai didi

c# - LINQ 非线性按字符串长度排序

转载 作者:太空狗 更新时间:2023-10-29 18:13:16 25 4
gpt4 key购买 nike

我正在尝试获取一个字符串列表,其中最长的字符串位于列表的两端,最短的字符串位于中间。例如:

A
BB
CCC
DDDD
EEEEE
FFFFFF

将被排序为:

FFFFFF
DDDD
BB
A
CCC
EEEEE

编辑:为了澄清,我专门寻找 LINQ 实现来实现预期的结果,因为我不确定如何/是否可以使用 LINQ。

最佳答案

您可以创建两个有序组,然后将第一组降序排列(已完成),第二组升序排列:

var strings = new List<string> { 
"A",
"BB",
"CCC",
"DDDD",
"EEEEE",
"FFFFFF"};
var two = strings.OrderByDescending(str => str.Length)
.Select((str, index) => new { str, index })
.GroupBy(x => x.index % 2)
.ToList(); // two groups, ToList to prevent double execution in following query
List<string> ordered = two.First()
.Concat(two.Last().OrderBy(x => x.str.Length))
.Select(x => x.str)
.ToList();

结果:

[0] "FFFFFF"    string
[1] "DDDD" string
[2] "BB" string
[3] "A" string
[4] "CCC" string
[5] "EEEEE" string

关于c# - LINQ 非线性按字符串长度排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23586738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com