vbLinq语句将Int的列表转换为Int.NET的列表



我有一个整数[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点。

最新更新