zoukankan      html  css  js  c++  java
  • C# List.sort排序详解(多权重,升序降序)

    很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序。

    其实理解了并不难

    升序降序比较


    sort有三种结果 1,-1,0分别是大,小,相等。

    默认List的排序是升序排序

    如果要降序排序,也很简单,只需要在前面加一个负号

    List<int> tmp = new List<int>(){,,,,};
    tmp.Sort((x, y) => -x.CompareTo(y));
    Console.WriteLine(tmp);
    //22,11,5,4,1

    对于非数值类型比较用.CompareTo(...),基于IComparable接口。基本上C#的值类型都有实现这个接口,包括string。

    而数值类型也可以自己比较。排序时左右两个变量必须是左-比较-右(被比较),切记不可反过来用。

    微软官方推荐的参数命名方式是x(左),y(右)

    多权重比较


    假设需要tuple里item2的值优先于item1。这个时候只要给比较结果*X。

    List<Tuple<int, int>> tmp = new List<Tuple<int, int>>()
    {
        new Tuple<int,int>(,),
        new Tuple<int,int>(,),
        new Tuple<int,int>(,),
        new Tuple<int,int>(,),
        new Tuple<int,int>(,),
    };
    tmp.Sort((x, y) => -(x.Item1.CompareTo(y.Item1) + x.Item2.CompareTo(y.Item2) * ));
    Console.WriteLine(tmp);
    //22,3
    //1,2
    //53,1
    //12,1
    //2,1
    //Tip: Item2 > Item1

    如果单独对升序降序控制,可以去掉大括号,分开处理

  • 相关阅读:
    ArcMap和ArcGIS Pro加载百度地图
    智能家居系列之——WIFI小车
    关于GIS中Scale和Resolution的那些事儿
    git cherry-pick
    虚拟DOM与DOM diff
    变量提升
    如果判定 this 又混乱了,就从头再读一遍……
    js 高程 Array
    Js高程-DOM
    剑指 Offer 15. 二进制中1的个数
  • 原文地址:https://www.cnblogs.com/sky6699/p/13534972.html
Copyright © 2011-2022 走看看