[英]How can I go through different levels in a dictionary
我一直在閱讀很多關於如何使用 foreach 迭代 Dictionary 的文檔,但我不太明白如何通過它所具有的級別。 例如:
我有“params”字典,我使用.Add()
向其中添加字符串和對象值,並在其中一個中添加一個名為“item”的級別。
據我了解,使用 Foreach(KeyValueaPair<>) 是遍歷字典。 我是否需要使用另一個 foreach(KeyValuePair<>) 才能遍歷第二級?
比如我想讓“param”獲取Posnr帶來的元素的值
IDictionary<string, object> params = new Dictionary<string, object>();
params.Add("Customerid", zwCustomer.Customerid);
params.Add("PedidoCli", zwCustomer.PedidoCli);
params.Add("PedidoSap", zwCustomer.PedidoSap);
params.Add("TFacturaMat", new Dictionary<string, object>()
{
{
"item", new Dictionary<string, object>()
{
{"Vbeln", zfacturaMats.Vbeln},
{"Posnr", zfacturaMats.Posnr},
{"Matnr", zfacturaMats.Matnr},
}
},
});
foreach(KeyValuePair<string, object> item in parametros)
{
param = $"{item.Key} : {item.Value}";
}
不,你可以直接這樣做。 .NET 庫的Dictionary<TKey, TValue>
類已經為您完成了所有這些魔法。
使用 foreach 循環
foreach(KeyValuePair<string, object> item in params)
{
Console.WriteLine($"{item.Key} : {item.Value}");
}
您已經遍歷了字典的所有元素。 從使用的角度來看,這與 params 是一個 List 完全相同(除了沒有保證的順序)。
如果你想要一個特定的元素,你有多種可能性,但在最簡單的情況下,你可以通過var myValue = params["PosNr"]
獲得一個元素。 或者,您可以使用TryGetValue()
方法來測試某個鍵是否存在。
所以底線:知道字典在內部是如何工作的很有趣,但是當您使用 .NET 庫時,您不必關心這些。 開箱即用的迭代和訪問工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.