gpt4 book ai didi

C# 如何快速处理大量数据

转载 作者:行者123 更新时间:2023-11-30 15:03:52 28 4
gpt4 key购买 nike

我试图找到一些关于我的问题的文章,但没有找到任何相关的或对我的应用程序有意义的文章。这是我的问题:

我有两个列表(> 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 是否以及如何以及 item2 -> item1 是否/如何的信息。在检查中,有一个对服务的命名管道调用来进行检查。该服务执行所有路径检查并在 item1 -> item2 等情况下返回。

最佳答案

这是一个O(N * M) 检查。

如果您只是比较某个键或其他键的相等性,那么您可以进行 O(N + M) 次迭代,假设有合理的哈希码和良好的键分布。在 .NET 中执行此操作的最简单方法是使用 LINQ 连接:

var pairs = from x in List1
join y in List2 on x.Key1 equals y.Key2
select new { x, y}; // Or whatever

foreach (var pair in pairs)
{
// Process each match
}

当然,如果您检查相等性,这没有帮助...但如果没有更多上下文,几乎不可能提供任何具体帮助。

关于C# 如何快速处理大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124797/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com