我已經寫了代碼,添加多個鍵的字典,我定義我的字典如下,並添加鍵和值遍歷的
Dictionary<int, Dictionary<int, List<int>>> outerDictionary = new Dictionary<int, Dictionary<int, List<int>>>();
現在我會多鍵字典中的每個關鍵喜歡通過,以獲得所需的項目每個鍵循環任何一個可以告訴我怎麼才能通過爲每個鍵值按我dictionary
我的代碼迴路
Dictionary<int, Dictionary<int, List<int>>> outerDictionary = new Dictionary<int, Dictionary<int, List<int>>>();
Dictionary<int, List<int>> 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 < 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<int, List<int>>();
outerDictionary.Add(employeeId, innerDictionary);
}
List<int> list;
if (!innerDictionary.TryGetValue(payYear, out list))
{
list = new List<int>();
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 < empID.Length; i++)
{
table.Rows.Add(empID[i], payYr[i], payID[i]);
}
return table;
}
你是什麼意思 「以」 是什麼意思?按什麼順序? '字典<,>'不保存任何種類的訂單。由於您擁有嵌套字典,因此也不清楚您的意思是什麼樣的關鍵。就我個人而言,我發現這種嵌套通常是一種設計氣味,表明這些值應該是其他類型的封裝*其他集合。 – 2012-03-21 15:08:36
詞典中沒有順序。他們不能保證按照他們的順序返回。 – 2012-03-21 15:09:14