我有一个如下的列表:
var initial = new List { 2, 5, 6,-1, -3, -4 };
期望的输出是 {-1,2,-3,-4,5,6} => (通过忽略负号对给定的列表进行排序,但在结果中不删除它们。)
我的尝试解决这个问题是:
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 谢谢!
initial.OrderBy(x => Math.Abs(x))
? - Heretic MonkeyOrderBy
的结果在你的for
中,例如foreach(var e in initial.OrderBy(x => Math.Abs(x))){
。 - Heretic Monkey