You execute the loop pos
in the second last foreach
. It remembers the result of the smallest mileage. If you want to get a new result, before you print the result, you need to request again numbers
. Just do
Console.WriteLine();
numbers = new int[]{ 12, 14, -12, -8, 0, 17, 11, 10, -30, -15 };
Console.WriteLine("- - - All numbers - - - ");
foreach (var number in numbers)
Console.Write("{0} ", number);
pos = from number in numbers
where number > 0
select number;
Console.WriteLine();
Console.WriteLine("- - - Positive numbers ( Second ) - - -");
foreach (var number in pos)
Console.Write("{0} ", number);
I would suggest using instead instead.
foreach (var number in numbers.Where(n => n > 0))
Console.Write("{0} ", number);
EDIT:
This is one way.
Func<int, bool> comparer = n => n > 0;
foreach (var number in Compare(numbers, comparer))
System.Console.Write("{0} ", number);
Compare
method
public IEnumerable<int> Compare(IEnumerable<int> source, Func<int, bool> comparer)
{
return source.Where(comparer);
}
You can also write an extension method. There are so many possible ways, depending on which direction you want to go.