我有一个整数[1,2,3,4….100]的列表。我想使用Linq语句使其成为一个新列表:[[1,2],[2,3],[3,4]。。。。[99100]]或[[1,2,3]、[2,3,4]、[3,4,5]。。。。。[98,99100]]取决于来自用户输入的大小。在VB.NET中使用linq可以做到这一点吗?
应Enigmatity的要求:
给定一个对象列表,我想使用Linq对列表中的每3个连续项应用一个函数,然后聚合它们以获得最终答案:这里有一个例子:原始列表:Point2D列表(每个点都有X和Y坐标),在该列表中,取每2个连续点(pi,pj),然后取pi。X^2+pj。Y^2,将所有这些值放到一个新列表中,然后最后取最终列表的和
这很容易。试试这个:
Dim build As Func(Of Integer, Integer()()) = Function (n) _
Enumerable _
.Range(1, 100)
.Take(100 - n) _
.Select(Function (x) Enumerable.Range(x, n).ToArray()) _
.ToArray()
Dim result = build(2)
只要把你想要的任何有效数字作为build
的参数,它就会起作用。
这对你修改后的问题有效吗?
Dim query = _
points _
.Zip(points.Skip(1), Function (p0, p1) p0.X * p0.X + p1.Y * p1.Y) _
.Sum()
请注意,当你谈论选择3点时,你的问题不是很清楚,但你的例子只使用了2点。