+ -
当前位置:首页 → 问答吧 → SortedList<string, Keyword> ResultList 怎么按照Keyword类排序啊

SortedList<string, Keyword> ResultList 怎么按照Keyword类排序啊

时间:2011-12-24

来源:互联网

C# code
   class Keyword :IComparable<Keyword>
    {
        public int StartIndex;
        public int EndIndex;
        public int Count;
        public string KeyWordString;
    }
    SortedList<string,Keyword> mylist=new SortedList<string,Keyword>();


我想给mylist排序 按照Keyword类中的count 也就是说如果count越大 mylist中的这个entry排名越靠前

如果不可以 有没有其他类似的类 或者方法可以实现

作者: hypnoz2012spring   发布时间: 2011-12-24

List<Keyword> list 

然后添加后调用 list.Sort()

作者: Sandy945   发布时间: 2011-12-24

C# code
如果你充分利用 SortedList 的特性,那么在Add时候就排序了。

 var list = new SortedList<string, Keyword>();
 var k0 = new Keyword { Count = 0 };
 var k1 = new Keyword { Count = 1 };
 var k2 = new Keyword { Count = 2 };
 // 注意这里是反过来Add的。
 list.Add(k2.Count.ToString("0000"), k2);
 list.Add(k1.Count.ToString("0000"), k1);
 list.Add(k0.Count.ToString("0000"), k0);
 
 foreach (var k in list)
    Console.WriteLine(k.Key);
 // 输出:0000, 0001, 0002

 如果你要再排序,可以直接用 Linq:
 // 按照 Count 倒排序
 var someOrdersList = list.OrderByDescending(x => x.Value.Count);

 foreach (var k in someOrdersList)
    Console.WriteLine(k.Key);


 

作者: fangxinggood   发布时间: 2011-12-24

LS list中的KeyWordString是独一无二的 我想用KeyWordString定位一个entry
比如 我需要mylist.get("KeyWordString") 获得这个entry

作者: hypnoz2012spring   发布时间: 2011-12-24

为什么不用 Dictionary<string, Keyword> 呢。 查找性能是最好的。

作者: fangxinggood   发布时间: 2011-12-24

http://www.cnblogs.com/passzh/archive/2011/01/11/1933149.html

你可以用 Dictionary ,然后按value 排个序

作者: Sandy945   发布时间: 2011-12-24

还有个一个技巧,你可以用额外的存储来帮Dictionary 排序

就是定义一个 List<KeyValuePair<string,Keyword>> list

 Dictionary <string,Keyword> dic

它是有序的,然后根据 list[index] 上 dic 中找对应项即可

eg: dic[list[index].Key]

作者: Sandy945   发布时间: 2011-12-24

引用 6 楼 sandy945 的回复:

还有个一个技巧,你可以用额外的存储来帮Dictionary 排序

就是定义一个 List<KeyValuePair<string,Keyword>> list

Dictionary <string,Keyword> dic

它是有序的,然后根据 list[index] 上 dic 中找对应项即可

eg: dic[list[index].Key]

+1

作者: fangxinggood   发布时间: 2011-12-24