gpt4 book ai didi

c# - 在 c# 中对 List 进行排序,忽略符号

转载 作者:行者123 更新时间:2023-11-30 13:21:51 25 4
gpt4 key购买 nike

我有一个列表如下 var initial = new List { 2, 5, 6,-1, -3, -4 };

预期输出为 {-1,2,-3,-4,5,6} =>(通过忽略 -ve 符号但不在结果中删除它们来对给定列表进行排序。)

我尝试解决这个问题是

            var initial = new List<string> { 2, 5, 6,-1, -3, -4 };
var dummyList = initial.FindAll(x => x < 0);

initial .RemoveAll(x => dummyList.Contains(x));

foreach (var e in dummyList)
{
initial .Add(e * -1);
}

initial.Sort();

foreach (var e in dummyList)
{
var index = initial.FindIndex(x=>x==(e*-1));
initial.RemoveAt(index);
initial.Insert(index, e);
}

有人可以为此提供更好的解决方案吗? https://dotnetfiddle.net/gcd1I1谢谢!

最佳答案

您可以将Comparison 传递给Sort 方法,然后使用绝对值进行比较:

list.Sort((a, b) => Math.Abs(a).CompareTo(Math.Abs(b)));

或者使用 Linq:

list = list.OrderBy(x => Math.Abs(x)).ToList();

关于c# - 在 c# 中对 List<int> 进行排序,忽略符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36728013/

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