Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IQueryable<;T>;第一个自由点_C#_Linq_Collections_Iqueryable - Fatal编程技术网

C# IQueryable<;T>;第一个自由点

C# IQueryable<;T>;第一个自由点,c#,linq,collections,iqueryable,C#,Linq,Collections,Iqueryable,从返回int集合的排序查询中获得第一个空闲位置的最有效方法是什么 例:{1,2,3,4,6}结果:5 目前,我正在使用foreach和counter来比较排序后的quety.ToList()中的当前值 在10万条记录上大约需要600毫秒。除非您使用多线程,否则一次读取一条是您最快的解决方案,因为这是一个O(n)问题。我不确定您将如何在LINQ中编写它,但我认为二进制搜索可以以这种方式更快—从中间开始,将索引与值进行比较—如果它们相等,在右半部分继续,否则在左半部分等 即使您从一个不是1的索引开始

从返回int集合的排序查询中获得第一个空闲位置的最有效方法是什么

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

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

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

我不确定您将如何在LINQ中编写它,但我认为二进制搜索可以以这种方式更快—从中间开始,将索引与值进行比较—如果它们相等,在右半部分继续,否则在左半部分等


即使您从一个不是1的索引开始,您也可以简单地将该值与增加的索引进行比较?将其转换为列表会使整个IEnumerable想法变得绝对,并且可能会失去一些性能。为什么不在IQueryable上用foreach迭代并找到第一个丢失的memeber

也就是说,如果你有索引。你有索引=你可以在具体索引处访问集合?如果你不能做到这一点,那么你可能是对的,那就是O(n);)你这样做不是为了生成ID,是吗?如果你对这个场景做更多的解释,也许有人可以想出另一种方法来实现同样的目标。尝试一下,它需要两倍的时间。呃。。。使用ToList()花费的时间更少?