LINQ query return same result despite different datasources

c#, linq

Solution

You are looping through `pos` in the second last `foreach`. It remembers a result from the least run. If you want a new result, you have to query `numbers` again before you print the result. 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 propose to use the following instead, though.

foreach (var number in numbers.Where(n => n > 0))
    Console.Write("{0} ", number);

EDIT:

This is one way to go.

Func<int, bool> comparer = n => n > 0;
foreach (var number in Compare(numbers, comparer))
            System.Console.Write("{0} ", number);

`Compare` method being

public IEnumerable<int> Compare(IEnumerable<int> source, Func<int, bool> comparer)
{
    return source.Where(comparer);
}

You could write an extension method as well. So many possible ways depending on what direction you want to go.

Problem

I'm trying the following : ``` int[] numbers = { 12, 14, -12, -8, 0, 17 }; var pos = from number in numbers where number > 0 select number; Console.WriteLine ( "- - - All numbers - - - " ); foreach (var number in numbers) Console.Write ( "{0} " , number ); Console.WriteLine(); Console.WriteLine ( "- - - Positive numbers ( First ) - - -" ); foreach ( var number in pos ) Console.Write("{0} ", number); 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); Console.WriteLine(); Console.WriteLine("- - - Positive numbers ( Second ) - - -"); foreach (var number in pos) Console.Write("{0} ", number); ``` Despite i change the elements in the array, i obtain the following results : ``` - - - All numbers - - - 12 14 -12 -8 0 17 - - - Positive numbers ( First ) - - - 12 14 17 - - - All numbers - - - 12 14 -12 -8 0 17 11 10 -30 -15 - - - Positive numbers ( Second ) - - - 12 14 17 ```

Original source