现在的情况 :
HashSet<string> MasterSet => {100, 3}
HashSet <string> SubSet => {100, 3} or {100} or {100, 3, 1}
因此,从庞大的子集列表中,基于 MasterSet 我选择了这样的特定集:
if(MasterSet.SetEquals(subSet) || MasterSet.IsSupersetOf(subSet) || MasterSet.IsSubsetOf(subSet))
如果它为真,则使用该子集进行处理,否则循环其他可用集。
重复问题: 如果业务逻辑想要在主集和子集中包含重复,例如:
MasterSet => {100, 3, 3}
SubSet => {100, 3, 3} or {100, 3} or {100, 3, 3, 1}
那么 HashSet 的使用就被剥夺了。
如果我将 MasterSet 和 Subset 更改为List<string>
编辑: “BigYellowCactus”提供的解决方案有效。但是,如果我想使用标题而不是元素的顺序来匹配,过滤集合会更容易吗?
MasterSet => {100, 3, 4}
MasterHeaders => {"T","F","V"} //Headers element corresponds to the MasterSet element
情况1:
SubSet => {3, 100}
SubSetHeaders => {"F", "T"} //Headers element corresponds to the SubSet element
案例二:
SubSet => {4, 3}
SubSetHeaders => {"V", "F"} //Headers element corresponds to the SubSet element
是否可以先通过比较 MasterHeaders 和 SubSetHeaders 的标头进行匹配,然后按值进行匹配?