我试图找到一些关于我的问题的文章,但没有找到任何相关的或对我的应用程序有意义的东西。这是我的问题:
我有两个(> 20,000)项列表。
我需要检查每个列表中的每个项目与相反列表中的每个项目。
像这样的实现:
foreach(var item1 in List1)
{
foreach(var item2 in List2)
{
// Check item 1 against item 2.
// Check item 2 against item 1.
}
}
由于为检查所做的工作,非常缓慢且无法使用。
有没有更有效的方法来处理这些需要像这样检查的大型项目列表?
如果我可以提供更多信息,请告诉我。感谢您的任何帮助/建议。
我正在使用 C# .NET 3.5
编辑:让我试着简要解释一下检查。
item1 和 item2 是路径系统的一部分。item1 和 item2 由 N 个其他项目连接。我正在检查 item1 是否连接(有效路径)到 item2,并且 item2 是否连接到 item1。不能假设如果 item1 -> item2,而不是 item2 -> item1。所以这两项检查都是必要的。
数据库包含是否以及如何 item1 -> item2 和 if/how item2 -> item1。在检查内部,有一个对服务的命名管道调用来进行检查。该服务会执行所有路径检查,并在 item1 -> item2 等情况下返回。