As said by Tim Schmelter in the first comment at your OP, a Linq IEnumerable reference it is a "query", namely it is a sort of reference to some static methods (eventually chained among them), that get a IEnumerable object(s).
So, what you are really calling, it isn't an object reference, but something that work as a static methods reference of an IEnumerable object.. so you executes that static methods every time you use your linq reference after its declaration in your code.
Therefore, if you instatiate an object in the original "query" expression you cannot modify its status with some "status changing" properties of the enumerated objects getted by the query, you are changing only the values getted in that precise time that you executes that property, but the immediately next call of the "query" reference in the code will shows/elaborates always the original expression and so will instantiate always the same object in the declaration of the query expression.
Anyway, you may try this:
var list = new int[]{1,2,3}.Select(x => new List<int>{x});
list = new int[]{5}.First().Concat(list);
In this way you can reassign the same reference with a query that instantiate a new object with the value as you want cancatening this value with the values getted by the original referenced query, and so you have changed the original object status intantiated in the initial query.