SortedDicationary の Except-Function を利用しようとしていますが、期待どおりに動作しないため、気が狂っています。Excpet 関数は、ディクショナリのエントリが単純なデータ型である限り機能します。ただし、辞書にオブジェクトを保存したいと思います。
これが私のサンプルです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DictionaryTest
{
class Program
{
static void Main(string[] args)
{
SortedDictionary<string, Object> objects = new SortedDictionary<string, Object>();
SortedDictionary<string, Object> objects2 = new SortedDictionary<string, Object>();
objects.Add("A", new Object());
objects.Add("B", new Object());
objects2.Add("A", new Object());
IEnumerable<KeyValuePair<string, Object>> objects_a_only = objects.Except(objects2);
foreach (KeyValuePair<string, Object> o in objects_a_only)
{
Console.WriteLine(o.Key);
}
Console.WriteLine("Program finished. Press any key to continue");
Console.ReadKey();
}
}
}
出力として「A」のみを取得することを期待していましたが、実際には「A」と「B」が返されます。
私が理解している限り、マッチングは各エントリのキーに基づいてのみ行われます。したがって、カスタマイズされた比較クラスを使用する理由はわかりません。
これに関するアイデアはありますか?