簡體   English   中英

需要排序字典,用於查找鍵小於或大於搜索值的值

[英]Need sorted dictionary designed to find values with keys less or greater than search value

我需要按價格 (十進制)值對對象進行快速訪問。 我需要能夠找到價格大於 A小於B的所有物品。 我想到了SortedList ,但它沒有提供從給定鍵值開始查找升序或降序枚舉器的方法(比如給我所有價格低於120美元的對象)。

想象一個系統接受賣家出售的汽車並將它們存儲到該集合中。 然后買家希望找到比1000美元便宜的汽車。

基本上我需要的是基於樹的集合和功能,以找到更小\\更大\\等於提供密鑰的節點。

請指教。

您可以在SortedList上使用BinarySearch來搜索滿足條件的第一個和最后一個索引,然后從列表中獲取項目范圍。

答案取決於您的使用模式。 如果這是一次性消耗未排序的輸入集並找到合適的對象,那么只使用LINQ會更好:

list.Where(e => A < e.Price || e.Price < B);

如果列表是靜態的,並且您想要查詢多個范圍,則將對象粘貼到數組中,按價格對它們進行排序,然后使用二進制方法查找感興趣的范圍。

請想一下SortedList。 或者,您可以使用任何集合並使用LINQ進行查詢。 例如普通通用列表:

        List<Int32> tempList = new List<Int32>();

        tempList.Where(singleItem => singleItem > 100)
            .ToList<Int32>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM