It's much simpler to just move the object instantiation into the loop, at the top of the loop:
for (/* something */)
{
MyClass instance = new MyClass();
instance.Id = "id1";
instance.Data.Add("data1");
if (/* something */)
{
m_instances.Add(instance);
}
}