gacar Ответов: 2

Как вычесть каждый пункт из следующего пункта?


У меня есть список целых чисел
Dim IntList as list(of integer) = {5,7,8,10,15,24,26}

Я хочу вычесть каждый пункт из следующего пункта,
(7-5),(8-7),(10-8),(15-10),(24-15),(26-24)
ResultList = {2,1,2,5,9,2}


Что я уже пробовал:

Я понятия не имею.
Dim ResultList = IntList.Where(Function(x, i) New KeyValuePair(Of Byte, Integer)(x.Key, i)).ToList

2 Ответов

Рейтинг:
10

gacar

Я нашел решение здесь

Dim IntList As List(Of Integer) = {5, 7, 8, 10, 15, 24, 26}.ToList

Dim ResultList = (From x In IntList Let nextindex = IntList.IndexOf(x) + 1 Let nextelement = IntList.ElementAt(If(nextindex = IntList.Count, nextindex - 1, nextindex)) Select nextelement - x).ToList()

result.RemoveAt(IntList.Count - 1)

ResultList = {2,1,2,5,9,2}


Рейтинг:
0

Leo Chapiro

Попробовать это:

Sub Main()

    Dim IntList As List(Of Integer) = New List(Of Integer)

    IntList.Add(5)
    IntList.Add(7)
    IntList.Add(8)
    IntList.Add(10)
    IntList.Add(15)
    IntList.Add(24)
    IntList.Add(26)
    '{5, 7, 8, 10, 15, 24, 26}


    Dim ResList As List(Of Integer) = New List(Of Integer)

    For i = 0 To IntList.Count - 2
        ResList.Add(IntList(i + 1) - IntList(i))
    Next
End Sub


gacar

Спасибо. Но мне нужно решение linq.

Leo Chapiro

Вы написали, что понятия не имели, теперь у вас есть алгоритм. Изменить его на LINQ будет несложно, для этого есть даже онлайн-инструменты.