2

出力を「True」と「False」として取得するために、C#で2つの辞書を比較したい.これまでに持っているコードは次のとおりです。

var dict3 = Dict.Where(entry => Dict_BM[entry.Key] != entry.Value)
                .ToDictionary(entry => entry.Key, entry => entry.Value);

「Dict」と「Dict_BM」という 2 つの異なる辞書名があり、これら 2 つの辞書を比較したいのですが、出力を「True」と「False」として取得する最善の方法を提案してください。

4

2 に答える 2

4

これは、2 つの辞書を比較して、それらの結果を true または false で返す最も簡単な方法だと思います。

このロジックは私のために働いています。

                Dictionary<string, int> Dictionary1 = new Dictionary<string, int>();
                d1.Add("data1",10);
                d1.Add("data2",11);
                d1.Add("data3",12);
                Dictionary<string, int> Dictionary2 = new Dictionary<string, int>();
                d2.Add("data3", 12);
                d2.Add("data1",10);
                d2.Add("data2",11);
                bool equal = false;
                if (Dictionary1.Count == Dictionary2.Count) // Require equal count.
                {
                    equal = true;
                    foreach (var pair in Dictionary1)
                    {
                        int tempValue;
                        if (Dictionary2.TryGetValue(pair.Key, out tempValue))
                        {
                            // Require value be equal.
                            if (tempValue != pair.Value)
                            {
                                equal = false;
                                break;
                            }
                        }
                        else
                        {
                            // Require key be present.
                            equal = false;
                            break;
                        }
                    }
                }
                if (equal == true)
                {
                    Console.WriteLine("Content Matched");
                }
                else
                {
                    Console.WriteLine("Content Doesn't Matched");
                }

これがお役に立てば幸いです。

于 2016-05-26T04:36:40.647 に答える
1

各キーの値が 2 つのソース辞書のエントリが等しいかどうかを示すブール値である新しい辞書を作成する場合は、次のようにします。

var dict3 = Dict.ToDictionary(
    entry => entry.Key, 
    entry => Dict_BM[entry.Key] == entry.Value);

2 つのソース ディクショナリに同じキーが含まれていない可能性がある場合は、次のようにしてみてください。

var dict3 = Dict.Keys.Union(Dict_BM.Keys).ToDictionary(
    key => key, 
    key => Dict.ContainsKey(key) && 
           Dict_BM.ContainsKey(key) && 
           Dict[key] == Dict_BM[key]);

ただし、2 つの辞書にまったく同じ要素が含まれているかどうかをテストするだけであれば、次のように簡単に使用できます。

var areEqual = Dict.SequenceEqual(Dict_BM);
于 2013-08-14T03:48:15.690 に答える