Сначала вы присвоили пустое строковое свойство:
var actual = "";
data.lastName = actual;
, а затем обновили значение фактического, но свойство все еще имеет "" в качестве значения. Просто переместите
data.lastName = actual;
до конца кода:
strind abc="12345678<9";
row1ViewModel data = new row1ViewModel();
data.identityType = abc[0].ToString();
data.passportType = abc[1].ToString();
data.issuingOrg = abc.Substring(2, 3);
var actual = "";
//data.lastName = actual;
if (abc[5] == '<')
{
actual = "Not specified";
}
else
{
string tempq = abc.Substring(5);
int index = tempq.IndexOf('<');
actual = abc.Substring(5, index);
}
//data.GetType().GetProperty(data.lastName).GetValue(actual,null)`
data.lastName = actual;