Linq语句将Int列表列入int .NET列表

时间:2014-11-08 08:46:28

标签: .net vb.net linq functional-programming

我有一个整数列表[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,将所有这些值放到一个新列表中,最后得到总和最终名单

1 个答案:

答案 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分。