Imports System.Collections.Generic
IO.File.WriteAllLines("test.txt", "100,500,200,300,400".Split(","c))
Dim numbers() As Double = Array.ConvertAll(IO.File.ReadAllLines("test.txt"), Function(i) Convert.ToDouble(i))
Dim combinations As List(Of Double()) = SumCombinations(1000, numbers)
For Each dbl As Double() In combinations
Console.WriteLine(String.Join(" + ", Array.ConvertAll(dbl, Function(d) d.ToString())))
Private Function SumCombinations(ByVal target As Double, ByVal values() As Double) As List(Of Double())
Dim sums, recursiveSums As New List(Of Double())
Dim currentValues() As Double
For index As Integer = 0 To values.Length - 2
currentValues = values.Take(index).Skip(1).ToArray()
If currentValues.Sum() = target Then
recursiveSums = SumCombinations(target, values.Skip(index).ToArray())
sums.AddRange(recursiveSums.ToArray())