title: Loop through for each key in Multi key dictionary
body: <p>I have written a code for adding multiple keys for a dictionary for that I defined my dictionary as follows and added the keys and values</p>
  
  <p><code>Dictionary&lt;int, Dictionary&lt;int, List&lt;int&gt;&gt;&gt; outerDictionary = new Dictionary&lt;int, Dictionary&lt;int, List&lt;int&gt;&gt;&gt;();</code></p>
  
  <p>Now I would like to loop through each keys in-order to get the required items can any one tell how can I loop through for each key value as per my <code>dictionary</code></p>
  
  <p>My code</p>
  
  <pre><code>Dictionary&lt;int, Dictionary&lt;int, List&lt;int&gt;&gt;&gt; outerDictionary = new Dictionary&lt;int, Dictionary&lt;int, List&lt;int&gt;&gt;&gt;();
  Dictionary&lt;int, List&lt;int&gt;&gt; innerDictionary;
  
      ArrayList arrPayPeriodID = new ArrayList();
      ArrayList arrPayYear = new ArrayList();
      ArrayList arrEmpID = new ArrayList();
  
      int[] ipayYear = new int[] { };
      int[] iPayPeriodID = new int[] { };
      int[] iEmpID = new int[] { };
  
      int ipayYr = 2011;
      int ipayYr1 = 2011;
      int ipayYr2 = 2012;
      int ipayYr3 = 2012;
  
      int PayPeriodID = 1;
      int payperiodid1 = 2;
      int payperiodid2 = 2;
      int payperiodid3 = 2;
  
      int EmpID = 1;
      int EmpID1 = 1;
      int EmpID2 = 1;
      int EmpID3 = 1;
  
      arrEmpID.Add(EmpID);
      arrEmpID.Add(EmpID1);
      arrEmpID.Add(EmpID2);
      arrEmpID.Add(EmpID3);
  
      arrPayPeriodID.Add(PayPeriodID);
      arrPayPeriodID.Add(payperiodid2);
      arrPayPeriodID.Add(payperiodid3);
      arrPayPeriodID.Add(payperiodid1);
  
      arrPayYear.Add(ipayYr);
      arrPayYear.Add(ipayYr1);
      arrPayYear.Add(ipayYr2);
      arrPayYear.Add(ipayYr3);
  
      iEmpID = (int[])arrEmpID.ToArray(typeof(int));
  
      iPayPeriodID = (int[])arrPayPeriodID.ToArray(typeof(int));
  
      ipayYear = (int[])arrPayYear.ToArray(typeof(int));
  
  
      DataTable table = GetTable(iEmpID, ipayYear, iPayPeriodID);
      DataRow row = table.Rows[0];
  
      for (int i = 0; i &lt; table.Rows.Count; i++)
      {
          DataRow row1 = table.Rows[i];
          var employeeId = (int)row1["EmpID"];
          var payYear = (int)row1["Year"];
          var payId = (int)row1["PayID"];
  
  
  
          if (!outerDictionary.TryGetValue(employeeId, out innerDictionary))
          {
              innerDictionary = new Dictionary&lt;int, List&lt;int&gt;&gt;();
              outerDictionary.Add(employeeId, innerDictionary);
          }
          List&lt;int&gt; list;
          if (!innerDictionary.TryGetValue(payYear, out list))
          {
              list = new List&lt;int&gt;();
              innerDictionary.Add(payYear, list);
          }
  
          list.Add(payId);
      }
  
  static DataTable GetTable(int[] empID, int[] payYr, int[] payID)
  {
  
      // Here we create a DataTable with four columns.
      DataTable table = new DataTable();
      table.Columns.Add("EmpID", typeof(int));
      table.Columns.Add("Year", typeof(int));
      table.Columns.Add("PayID", typeof(int));
  
      // Here we add five DataRows.
      for (int i = 0; i &lt; empID.Length; i++)
      {
          table.Rows.Add(empID[i], payYr[i], payID[i]);
      }
      return table;
  }
  </code></pre>