c# List Sort 简单实现

本文介绍了一种针对CTP交易数据的排序算法实现。该算法通过比较交易数据的时间戳、成交量以及写入时间等关键字段来确保数据的正确排序。由于CTP未提供更新序列号,因此该算法采取了额外措施确保排序的准确性。
vtTick.Sort((Comparison<CtpTick>)delegate(CtpTick a,CtpTick b)
                    {
                        if (a.UpdateTime < b.UpdateTime)
                            return -1;
                        if (a.UpdateTime > b.UpdateTime)
                            return 1;
                        if (a.doneVolume < b.doneVolume)
                            return -1;
                        if (a.doneVolume > b.doneVolume)
                            return 1;
                        //下面是无奈之举,都怪CTP没有updSerial,加个序号很难吗!?
                        if (a.WriteTime < b.WriteTime)
                            return -1;
                        if (a.WriteTime > b.WriteTime)
                            return 1;
                        return 0;
                    });          


转载于:https://www.cnblogs.com/norsd/archive/2013/02/16/6359434.html

C#中,`List<T>` 提供了多种排序方法以满足不同的排序需求。最常见的是使用默认排序方式或自定义比较器进行排序。 ### 使用默认排序方法 如果列表中的元素类型实现了 `IComparable<T>` 接口,则可以直接调用 `Sort()` 方法进行排序,无需提供额外的比较器[^1]。例如: ```csharp List<int> numbers = new List<int> { 5, 3, 8, 6, 7 }; numbers.Sort(); // 使用默认排序方法 ``` ### 使用自定义比较器 当需要按照特定规则排序或者元素类型没有实现 `IComparable<T>` 接口时,可以创建一个实现了 `IComparer<T>` 接口的类作为自定义比较器,并将其传递给 `Sort()` 方法[^1]。例如: ```csharp public class CustomComparer : IComparer<int> { public int Compare(int x, int y) { return y.CompareTo(x); // 降序排列 } } // 使用自定义比较器排序 List<int> numbers = new List<int> { 5, 3, 8, 6, 7 }; numbers.Sort(new CustomComparer()); ``` ### 指定排序范围 除了对整个列表进行排序外,还可以指定排序的起始索引和数量,仅对列表的一部分进行排序。这种方法接受三个参数:起始索引、要排序的元素数量以及用于比较的比较器[^2]。例如: ```csharp List<int> numbers = new List<int> { 5, 3, 8, 6, 7 }; // 从索引1开始,排序3个元素,使用自定义比较器 numbers.Sort(1, 3, new CustomComparer()); ``` ### 使用扩展方法进行排序 Z.ExtensionMethods 提供了一些额外的列表操作方法,包括排序。这些方法通常以扩展方法的形式出现,使得代码更加简洁易读[^3]。例如: ```csharp List<int> numbers = new List<int> { 5, 3, 8, 6, 7 }; numbers.SortDescending(); // 使用扩展方法降序排序 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值