首页 新闻 会员 周边 捐助

Hashtable排序的问题

0
悬赏园豆:20 [已解决问题] 解决于 2008-08-24 19:18
<P>我写了这样一个方法</P> <P>Hashtable cList = new Hashtable();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (DataRow row in tb.Rows)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cList.Add(row["item_name"].ToString(), row["item_ename"].ToString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return cList;</P> <P>现在在Hashtable中的数据不是按添加的顺序</P> <P>我想得到要得到按添加进Hashtable的顺序</P> <P>如:colist.add("aaa",1);</P> <P>colist.add("sfsf",1);</P> <P>.........</P> <P>在HashTable存的也是这个顺序,怎么实现</P>
999999999999999的主页 999999999999999 | 初学一级 | 园豆:3
提问于:2008-08-20 15:05
< >
分享
最佳答案
0
产生这个结果的原因大家都知道,Hashtable内部的排序机制使然.我们可以用ArrayList重写Hashtable.因为ArrayList是不会排序的。代码如下: namespace NoSortHashtable { public class NoSortHashtable : Hashtable { private ArrayList keys = new ArrayList(); public NoSortHashtable() { } public override void Add(object key, object value) { base.Add (key, value); keys.Add (key); } public override ICollection Keys { get { return keys; } } public override void Clear() { base.Clear (); keys.Clear (); } public override void Remove(object key) { base.Remove (key); keys.Remove (key); } public override IDictionaryEnumerator GetEnumerator() { return base.GetEnumerator (); } } }
伽马科技.攻城师 | 小虾三级 |园豆:1303 | 2008-08-20 16:49
其他回答(5)
0
看看这个,可能对你有所帮助 http://www.cnblogs.com/roboth/articles/784671.html http://www.cnblogs.com/roboth/articles/784655.html
roboth | 园豆:28 (初学一级) | 2008-08-20 15:17
0
Hashtable 确实不能排序,你每次取的时候,里面的元素顺序都是不同的。 你可以创建Hashtable 的时候,同时创建一个数组或者一个列表ArrayList,List来存放Hashtable 里的key.每次取的时候先从数组或者列表中取出key值,然后从Hashtable 中取出相应的value值。 还需要我写出代码么?
别惹蚂蚁 | 园豆:75 (初学一级) | 2008-08-20 15:26
0
http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx 使用OrderedDictionary
Gray Zhang | 园豆:17610 (专家六级) | 2008-08-20 15:52
0
建议你从数据库或者其他数据源中取数据时排序,而不是在程序中排序。 如果是数据库,加一个order by就可以了。
玉开 | 园豆:8822 (大侠五级) | 2008-08-20 15:59
0
请使用泛型哈希,Dictionary<T,K>
lexus | 园豆:0 (初学一级) | 2008-08-20 23:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册