[轉貼] Dictionary的foreach使用KeyValuePair

2012040314:05

出處:http://www.dotblogs.com.tw/puma/archive/2008/10/17/5711.aspx

進階參考:http://www.wretch.cc/blog/ian0524/12790043


最近剛好要用到Dictionary來記錄一些東西..

但不知道如何使用foreach把每一個Dictionary裡的東西抓出來..

去找了一下msdn,把它記在Blog裡...分享給大家呀..

找到了一些資訊:

foreach (KeyValuePair<TKey, TValue> kvp in myDictionary) {...}

Tkey,TValue可以是不同型態,不一定要是string

看到這句就大概可以猜出來了,就是用KeyValuePair,用範例介紹如何使用..

//注意,鍵相當於找到對應值的唯一標識,所以不能重複 

//但是值可以重複 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

public partial class TestKeyValuePair : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Dictionary<string, string> dic = new Dictionary<string, string>();

        if (!dic.ContainsKey("Name")) dic.Add("Name", "puma");
        if (!dic.ContainsKey("Blog")) dic.Add("Blog", "F6 Team");
        if (!dic.ContainsKey("Group")) dic.Add("Group", "Dotblogs");

        //進行排序
        var result = from pair in dic 
                         orderby pair.Key 
                         select pair;

        foreach (KeyValuePair<string, string> item in result)
        {
            Response.Write(string.Format("{0} : {1}
", item.Key, item.Value));
        }

    }
}

執行結果:

Blog : F6 Team
Group : Dotblogs
Name : puma

參考網址:

http://msdn.microsoft.com/en-us/library/xfhwa508(VS.80).aspx

**************************************************************************************************************

自己之前寫的單位換算的部份程式碼,也有用到類似的語法,將文字檔內容對應到下拉選單

例:面積.txt

平方公尺(m^2),1
公畝(a.),0.01
公頃(ha.),0.0001
英畝(acre),0.000247106
日坪(台坪),0.3025
日畝(台畝),0.0100833
台灣甲,0.000103102
平方呎(ft^2),10.7639104167097
平方吋(in^2),1550.0031000062
平方碼(yard^2),1.19599004630108
平方哩(mile^2),3.86102158542446E-07

**************************************************************************************************************

        private void Form1_Load(object sender, EventArgs e)
        {
            SelectUnit("面積");
        }

        //選取要進行換算的單位
        void SelectUnit(string path)
        {
            // 設定 comboBox.Items 的初始值
            ArrayList cboItems1 = new ArrayList();

            //讀取要換算的單位
            string filename = @"data\" + path + ".txt";
            StreamReader sr = new StreamReader(filename);
            string line = sr.ReadLine();
            while (line != null)
            {
                string[] datas = line.Split(',');
                string key = datas[0];
                double value = double.Parse(datas[1]);

                cboItems1.Add(new KeyValuePair (key, value));

                line = sr.ReadLine();
            }
            sr.Close();

            //填值進 comboBox.Items
            comboBox1.ValueMember = "Value";
            comboBox1.DisplayMember = "Key";
            comboBox1.DataSource = cboItems1;
        }

****************************************************************************
另外的排序方式
// Create dictionary and add five keys and values.
var dictionary = new Dictionary(); dictionary.Add("car", 2); dictionary.Add("apple", 1); dictionary.Add("zebra", 0); dictionary.Add("mouse", 5); dictionary.Add("year", 3); // Acquire keys and sort them. var list = dictionary.Keys.ToList(); list.Sort(); // Loop through keys. foreach (var key in list) { Console.WriteLine("{0}: {1}", key, dictionary[key]); }
出處:http://www.dotnetperls.com/sort-dictionary