簡體   English   中英

將C#中的兩個字典與字符串,字典進行比較 <string, object> &gt;

[英]Comparing two dictionaries in C# with string, Dictionary<string, object>>

我有兩個字典,我想將它們相互比較,它們的類型為Dictionary>

我嘗試使用foreach循環,但無法完全按預期工作。解決該問題的最佳方法是什么?

foreach (KeyValuePair<string, Dictionary<string, object>> entry1 in dict1)
{
    foreach (KeyValuePair<string, Dictionary<string, object>> entry2 in dict2)
    {
        if (entry1.key = entry2.key)
        {
            if (entry1.Value["Number"]==entry2.Value["Number"])
            {
                Console.WriteLine("Comparison successful")
            }
        }
    }
}
public static Boolean CompareDictionary(Dictionary<string, object> D1, Dictionary<string, object> D2)
{
    if (D1 == null && D2 == null) return true;
    else if (D1 == null || D2 == null) return false;

    if (D1.Count != D2.Count) return false;    
    if (D1.Keys.Except(D2.Keys).Any()) return false;
    if (D2.Keys.Except(D1.Keys).Any()) return false;

    foreach (string Key in D1.Keys)
    {
        if (!D2.ContainsKey(Key)) return false;
        if (D1[Key] != D2[Key]) return false;
    }
    return true;
}

這里是:

private static bool Check2DictionariesAreEqual(Dictionary<string, object> entry1, Dictionary<string, object> entry2)
{
    if(entry1 == null && entry2 == null)
    {
        return true;
    }
    else if(entry1 == null || entry2 == null)
    {
        return false;
    }

    if(entry1.Count != entry2.Count)
    {
        return false;
    }

    bool result = true;

    foreach (string key in entry1.Keys)
    {
        // Check Key
        result &= entry2.ContainsKey(key);

        if (!result) // Quick Break
        {
            break;
        }

        // Check Value
        result &= entry2[key] == entry1[key];

        if(!result) // Quick Break
        {
            break;
        }
    }

    return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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