Dictionary的排序查找等一些操作

Dictionary<int, string> dic = new Dictionary<int, string>();

    dic.Add(1, "HaHa");

    dic.Add(5, "HoHo");

    dic.Add(3, "HeHe");

    dic.Add(2, "HiHi");

    dic.Add(4, "HuHu");

    var result = from pair in dic orderby pair.Key select pair;

    foreach (KeyValuePair<int, string> pair in result)
 {

    Console.WriteLine("Key:{0}, Value:{1}", pair.Key, pair.Value);

    }
     // 根据最大Vlue和最小value取对应的Key
        private void button1_Click(object sender, EventArgs e)
        {
            List<string> list = new List<string>();
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("[1]", "02:01:11");
            dic.Add("[2]", "03:01:11");
            dic.Add("[3]", "01:01:13");
            list.Add("02:01:11");
            list.Add("03:01:11");
            list.Add("01:01:13");
            list.Sort();          
            string minKey= GetKey(dic,list[0]);
            string maxKey = GetKey(dic, list[list.Count-1]);
            MessageBox.Show("min:" + minKey + list[0] + System.Environment.NewLine + "max:" + maxKey + list[list.Count - 1]); 
        }
        // 根据Value取Key值
        private string GetKey(Dictionary<string,string> dic, string value)
        {
            string str="";
            var key = from d in dic
                      where d.Value == value
                      select d.Key;
            foreach (var k in key)
            {
                str = str + k +",";
            }
            return str.TrimEnd(',');
            //如果没有重复项可直接查找
            var str2 = dic.SingleOrDefault(k => k.Value == value);
            // Dictionary排序
            var result = dic.OrderByDescending((s) => s.Value);
            var result2 = dic.OrderByDescending((s) => s.Key);
        }
 
// 应用实例

        private void button1_Click(object sender, EventArgs e)         {                         List<person> per = new List<person>             {                 new person{ Name="AB", Age=30},                 new person{ Name="AA", Age=12},                 new person{ Name="AA", Age=13}             };

            var result = per.Where(p => p.Name == "AB")                 .OrderByDescending(p => p.Age)                 .Take(2); //从序列的开头返回指定数量的连续元素。             foreach (var r in result)             {                 MessageBox.Show(r.Age.ToString());             }

        }

        public class person         {             public string Name             {                 get;                 set;             }             public int Age             {                 get;                 set;             }         }

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值