我正在寻找有效的方法来组合多个哈希集(基于对象键),同时保留非键值(例如下面的版本)。
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)
这仅显示列表之一(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);
哈希集有可能吗?
更新
重要的是要跟踪哪个列表具有哪个版本(在最终结果中)。