オブジェクトのリストの比較に関する私の研究でこれまでに見つけた解決策は、通常、オブジェクトの新しいリストを生成しました。たとえば、一方のリストには存在するが、もう一方のリストには存在しないアイテムです。私の場合、2つのリストを比較して、キーが一方のリストに存在し、もう一方のリストには存在しないアイテムを見つけ(両方の方法を比較)、両方のリストにあるキーについて、値が同じか異なるかを確認します。
比較されるオブジェクトには、キーを構成する複数のプロパティに加えて、値を構成するプロパティがあり、最後に、比較の結果を説明する列挙型プロパティ({Equal、NotEqual、NoMatch、NotYetCompared}など)があります。したがって、私のオブジェクトは次のようになります。
class MyObject
{
//Key combination
string columnA;
string columnB;
decimal columnC;
//The Value
decimal columnD;
//Enum for comparison, used for styling the item (value hidden from UI)
//Alternatively...this could be a string type, holding the enum.ToString()
MyComparisonEnum result;
}
これらのオブジェクトは2つにまとめられObservableCollection<MyObject>
、比較されます。UIにバインドされると、グリッド行はcaomparison結果の列挙型に基づいてスタイル設定されるため、ユーザーは新しいデータセットにあるキーは簡単に確認できますが、古いデータセットにはないキーを簡単に確認できます。その逆も同様です。別の値。両方のリストはUIのデータグリッドに表示され、行は比較結果に基づいてスタイル設定されます。
LINQはこれを効率的に解決するためのツールとして適していますか、それともループを使用してリストをスキャンし、キーが見つかったときにブレークアウトする必要がありますか(このような解決策は当然、手続き型プログラミングのバックグラウンドから得られます)...または他の方法は?
ありがとうございました!