Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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
Linq语句VB.NET列表_.net_Vb.net_Linq_List - Fatal编程技术网

Linq语句VB.NET列表

Linq语句VB.NET列表,.net,vb.net,linq,list,.net,Vb.net,Linq,List,我有一个递增整数n1,n2,n3,…ni。。。n100。我想编写一个linq语句和/或lambda表达式来执行以下操作:给定一个整数n,搜索列表并返回列表中的两个连续项ni和n(I+1),这样n(I)我最初是用C#编写的,并使用DotNetFiddle将其转换为VB,因此可能在一个或两个地方出现语法错误,但这是要点 本质上,我将输入列表与其自身的偏移版本一起使用(这意味着您希望确保仅在安全地重新计算的IEnumerables上执行此操作,或者在开始时调用ToArray(),以设置另一个要使用的变

我有一个递增整数n1,n2,n3,…ni。。。n100。我想编写一个linq语句和/或lambda表达式来执行以下操作:给定一个整数n,搜索列表并返回列表中的两个连续项ni和n(I+1),这样n(I)我最初是用C#编写的,并使用DotNetFiddle将其转换为VB,因此可能在一个或两个地方出现语法错误,但这是要点

本质上,我将输入列表与其自身的偏移版本一起使用(这意味着您希望确保仅在安全地重新计算的
IEnumerable
s上执行此操作,或者在开始时调用
ToArray()
,以设置另一个要使用的变量。这不是问题,因为您的参数类型是
list(整数的)
,但将其更改为
IEnumerable(整数)
以具有更强的契约性和更高的可用性并不是一个坏主意。)我将它们压缩为匿名类型以进行临时存储,然后根据您在原始
for
循环中设置的条件进行过滤

Dim zipped = List.Zip(List.Skip(1), Function(a, b) New With {.A = a, .B = b})
Dim ret = zipped.Where(Function(c) c.A <= n AndAlso n <= c.B)
For Each v In ret
    item1 = v.A
    item2 = v.B
Next
Dim zipped=List.Zip(List.Skip(1),函数(a,b)使用{.a=a,.b=b}新建)

Dim ret=zipped.Where(Function(c)c.A此外,为什么要在LINQ中执行此操作?如果您已经在
for
循环中执行了此操作,那么这听起来可能是一个更好的选择。仅仅因为某些操作在LINQ中是可行的,并不意味着应该在LINQ中执行。
Dim zipped = List.Zip(List.Skip(1), Function(a, b) New With {.A = a, .B = b})
Dim ret = zipped.Where(Function(c) c.A <= n AndAlso n <= c.B)
For Each v In ret
    item1 = v.A
    item2 = v.B
Next