我有一个整数列表[1,2,3,4 .... 100]。 我想使用Linq语句使其成为一个新列表: [[1,2],[2,3],[3,4] ... [99100] 或[[1,2,3],[2,3,4],[3,4,5] ..... [98,99,100]] 取决于用户输入的大小。在VB.NET中使用linq可以做到这一点吗?
响应Enigmativity的要求:
给定一个对象列表,我想使用Linq将一个函数应用于列表中的每3个连续项,然后聚合它们以得到最终答案:这是一个例子:原始列表:Point2D列表(每个点有X和Y坐标),在该列表中,取每2个连续点(pi,pj)然后取pi.X ^ 2 + pj.Y ^ 2,将所有这些值放到一个新列表中,最后得到总和最终名单
答案 0 :(得分:0)
这很容易。试试这个:
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分。