Yesterday I wrote the following c# code (shortened a bit for legibility):
var timeObjects = ( from obj in someList where ( obj.StartTim
Your original timeObjects definition defines a LINQ expression that gets lazily evaluated, so everytime you try to go over the timeObjects enumerable, it will create new instances of MyObject.