Why are the lists list1Instance and p in the Main method of the below code pointing to the same collection?
list1Instance
p
Main
class Person
You could make a deepclone of each item in the list, and never return references to your original items.
public IEnumerable Get() { return l1 .Select(p => new Person(){ FirstName = p.FirstName, LastName = p.LastName }); }