Foreach item changes not preserved outside loop
===

I have seen [this question][1] already but it does not explain it so that I understand what is actually going on.  I've been developing for years and never come across this before (though my usage of Linq and Parallel is fairly recent).

My code is:

    Parallel.ForEach(databaseMetadata.Rows.Cast<DataRow>(), row => {
        	var fieldName = row.Item("Name", "");
        	var field = this.Fields.Where(f => f.Name.ToLower() == fieldName.ToLower()).SingleOrDefault();
    		if(field != null) { field.Validate(this, connection, row); }
    });

Within the field.Validate function it sets a property named 'HasBeenValidated' on the field object to true, however, as soon as I come out of this Parallel.ForEach loop, that property is set back to false.  Can someone please explain why this is happening and what I can do to ensure that changes within the loops are persisted outside of the loop.

Thanks in advance.

  [1]: http://stackoverflow.com/questions/7742937/foreach-changes-not-being-preserved-on-linq-item-collection
