非キー値(以下のバージョンなど)を保持しながら、(オブジェクトキーに基づいて)複数のハッシュセットを組み合わせる効率的な方法を探しています。
class MyObject {
public string Key {get; set;}
public long Version {get; set;}
override GetHashCode() { *key* }
override Equals(...) { *key* }
}
およびで、ハッシュセットをマスターリストに結合する必要がありますが、すべてのバージョンも結合する必要があります。
この方法で3セットの和集合を作ることができます:
for (var o in List1.Union(List2).Union(List3))
Console.WriteLine("{0} : {1}", o.Key, o.Version)
これは、リストの1つ(List1、またはアイテムを含むリスト)のバージョンのみを表示します。
これらをすべてのバージョンの結果にコンパイルする必要があります。
私がこのようにできることを望む何か:
for (var o in List1.Union(List2).Union(List3).Select((a,b,c) => new DiffObj(){Key=a.Key,VersionA=a.Version,VersionB=b.Version,VersionC=c.Version}))
Console.WriteLine("{0} : {1},{2},{3}", o.Key, o.VrsionA, o.VersionB, VersionC);
ハッシュセットでそれは可能ですか?
アップデート
どのリストにどのバージョンが含まれていたかを追跡することが重要です(最終結果)。