添加了5个键-值对(其中有值相同的对象)到哈希表中,对哈希表按照值来排序,怎么取出排序后的值对应的键?
例如:
Hashtable ht=new Hashtable(); //创建一个Hashtable实例
ht.Add("1","1");//添加key/value键值对
ht.Add("2","2");//
ht.Add("3","5");//
ht.Add("4","5");//
ht.Add("5","5");//
ICollection values = ht.Values;//对值排序
ArrayList al = new ArrayList(values);
al.Sort();//从小到大
al.Reverse();//反转,从大到小
//取值由大到小对应的键
for (int i = 0; i < 5; i++)
{
foreach (System.Collections.DictionaryEntry de in ht)
if (de.Value.ToString() == maxsimi[i].ToString())
{
maxunum[i] = Convert.ToInt16(de.Key.ToString());//得到key
break;//退出foreach遍历
}
Console.WriteLine("{0}", maxunum[i]);
}输出最大的值对应的键,为5 5 5 2 1 怎样将值相同的键识别出来呢?
例如:
Hashtable ht=new Hashtable(); //创建一个Hashtable实例
ht.Add("1","1");//添加key/value键值对
ht.Add("2","2");//
ht.Add("3","5");//
ht.Add("4","5");//
ht.Add("5","5");//
ICollection values = ht.Values;//对值排序
ArrayList al = new ArrayList(values);
al.Sort();//从小到大
al.Reverse();//反转,从大到小
//取值由大到小对应的键
for (int i = 0; i < 5; i++)
{
foreach (System.Collections.DictionaryEntry de in ht)
if (de.Value.ToString() == maxsimi[i].ToString())
{
maxunum[i] = Convert.ToInt16(de.Key.ToString());//得到key
break;//退出foreach遍历
}
Console.WriteLine("{0}", maxunum[i]);
}输出最大的值对应的键,为5 5 5 2 1 怎样将值相同的键识别出来呢?
? 感谢
{
var list = new List<SomeObj>
{
new SomeObj { key="1", value="1" },
new SomeObj { key="2", value="2" },
new SomeObj { key="3", value="5" },
new SomeObj { key="4", value="5" },
new SomeObj { key="5", value="5" },
};
//按value降序
list = list.OrderByDescending(t => t.value).ToList();
foreach (var item in list)
Console.WriteLine(item); Console.WriteLine("------------"); //按key升序
list = list.OrderBy(t => t.key).ToList();
foreach (var item in list)
Console.WriteLine(item); Console.Read();
}public class SomeObj
{
public string key { get; set; }
public string value { get; set; }
public override string ToString()
{
return key + ":" + value;
}
}