首页 > 解决方案 > 基于指定的键间隔对C#中的SortedDictionary求和

问题描述

这就是价值最初的样子

在根据指定的间隔进行值的总和后,在这种情况下,它在 0.5 的间隔内对键的值求和

目前,它是在 SortedDictionary 上的 foreach 的帮助下完成的,但有没有其他有效的方法可以做到这一点,比如 LINQ?这将真正有助于优化代码以解决性能问题。

当前代码实现:

private NewMarketPrice[] ConsolidateBids(double tickSize, IEnumerable<NewMarketPrice> bids)
    {
        SortedDictionary<double, int> consolidatedBids = 
            new SortedDictionary<double, int>(new HighestPriceComparer());

        double lowestBid = Double.MaxValue;
        foreach(NewMarketPrice bid in bids)
        {
            if(bid.Price < lowestBid)
            {
                lowestBid = bid.Price;
            }

            double consolidatedPrice = RoundDownToNearestInterval(bid.Price, tickSize);

            int consolidatedQuantity;
            if(!consolidatedBids.TryGetValue(consolidatedPrice, out consolidatedQuantity))
            {
                consolidatedQuantity = 0;
                consolidatedBids.Add(consolidatedPrice, 0);
            }

            consolidatedQuantity += bid.Qty;
            consolidatedBids[consolidatedPrice] = consolidatedQuantity;
        }

标签: c#sorteddictionary

解决方案


推荐阅读