You can pass in a lambda to select the property you need:
private String formatListString<T>(List<T> list, Func<T, string> selector)
{
for (...)
{
str += selector(list[i]);
...
}
return str;
}
Call as follows:
var genres = formatListString(genreList, x => x.Value);
var nationalities = formatListString(nationalityList, x => x.Code);
The generic type parameter can be automatically inferred from the call, so you don't have to specify it explicitly (i.e. write formatListString<Genre>(genreList, x => x.Value);
)