加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 19:27:06 所属栏目:百科 来源:网络整理
导读:我有一个列表如下 ????var initial = new List {2,5,6,-1,-3,-4}; 预期输出为{-1,2,-4,6} =(通过忽略-ve符??号对给定列表进行排序,但不在结果中删除它们.) 我试图解决这个问题 var initial = new Liststring { 2,-4 }; var dummyList = initial.FindAll(x =
我有一个列表如下
????var initial = new List {2,5,6,-1,-3,-4};

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

我试图解决这个问题

var initial = new List<string> { 2,-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
谢谢!

解决方法

您可以传递比较到排序方法,然后使用绝对值进行比较:

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

或者使用Linq:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读