簡體   English   中英

如何通過字典中的不同級別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM