我正在尝试查找数据库中具有完全相同的子记录集的所有记录,如提供的那样。听起来不是很清楚,但只是挂断,我会解释。
表条形码包含字段条形码和文档:
Barcode | Document ________|_________ A | ABC A | CDE A | EFG B | XYZ B | VWX C | ABC D | ABC D | CDE D | EFG E | EFG
如果您注意到,条形码 A 和 D 具有完全相同的文档集。条形码 C 和 E 是 A 和 D
的子集然后我有一组文件进入该功能,比如该组是 ABC,CDE,EFG 。这是一个列表。 (条形码信息存储在SQL Server中,通过LINQ to SQL检索)。对于这组文档,我需要找到所有匹配的条形码: A 和 D 。但忽略包含文档子集的条形码: C 和 E 应该被忽略。
目前我有遍历所有文档的递归函数,并通过传入的文档集部分过滤掉它们。这为我提供了匹配集,但也包括子集(如 C 和 E ),然后我过滤掉子集。
我认为这不是问题的最佳解决方案,必须有更优雅的解决方案。但我很难想到其他任何方法。 有什么建议吗?
P.S。 我希望解释清楚,我可以提供我的代码,如果有人足够自虐 - )
答案 0 :(得分:1)
您可以找到其文档包含在输入列表中的每个条形码,按条形码分组,并选择其计数等于输入列表中的文档数量的所有条形码。
如果您经常执行此查询并且文档集不会发生太大变化,则可以使用另一种方法,您可以为每个文档(Dictionary<Document, ISet<Barcode>>
)创建一组条形码的内存索引。然后,如果您有一组文档需要查找条形码,您可以迭代它们,相交它们的集合。