ComplexProperties with Reflections
Considering that you simply return null if the itemproperties are null, do that immediately:

if (itemproperties == null)
{
    return null;
}

if (propName.Contains("."))
{
}


That way you don't need to have 80+ lines inside an if.

The same is probably true for your next check -- if (propName.Contains(".")) -- but since you don't provide us with enough information I cannot help you there: where does propName come from? Where does record come from?

I see duplicate code:

actualproperty.Substring(0, actualproperty.IndexOf('['));
propertyNameList[i].Substring(0, propertyNameList[i].IndexOf('['));


Shouldn't that be converted to a method call?