IQueryable第一个免费名额

发布于 2024-08-18 07:47:32 字数 195 浏览 6 评论 0原文

从返回 int 集合的排序查询中获取 first 空闲位置的最有效方法是什么?

例如:{1,2,3,4,6} |结果:5

目前我正在使用 foreach 和 counter 来比较已排序 quety.ToList() 中的当前值 100 000 条记录大约需要 600 毫秒。

What's the most efficient way to get a first free spot from sorted query returning int collection ?

eg.: {1,2,3,4,6} | result.: 5

At the moment I am using foreach and counter that compares current value from sorted quety.ToList()
which takes about 600ms on 100 000 records.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽清梦 2024-08-25 07:47:32

除非您使用多线程,否则一次读取一个是最快的解决方案,因为这是一个 O(n) 问题。

Unless you multithread it, reading one at a time is your fastest solution since this is an O(n) problem.

薄情伤 2024-08-25 07:47:32

我不确定你会如何在 LINQ 中编写它,但我想这样二分搜索可能会更快 - 从中​​间开始,将索引与值进行比较 - 如果它们相等,则在右半部分继续,否则在左半等。

即使您从不为 1 的索引 start_index 开始,您也可以简单地将该值与增加了 start_index 的索引进行比较。

I am not sure how you would write it in LINQ, but I suppose a binary search could be faster in this way - starting from the middle, comparing the index with value - if they are equal, continue in the right half, otherwise in the left half etc.

Even if you're starting from an index start_index which is not 1, you can simply compare the value with index increased by start_index.

一片旧的回忆 2024-08-25 07:47:32

为什么使用ToList()?将其转换为列表会使整个 IEnumerable 想法变得绝对,并且您可能会在那里失去一些性能。为什么不使用 foreach 遍历 IQueryable 并找到第一个缺失的成员?

Why do you use ToList()? Turning it to a list renders the whole IEnumerable idea absolute and you might lose some performance there. Why not iterate with foreach over the IQueryable and find the first missing memeber?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文