protected static IEnumerable<Person> GeneratePersonsFromXml(IEnumerable<XElement> nodes, string id)
{
var persons = new List<Person>();
var varfields = nodes.Elements("varfield").Where(x => ((string)x.Attribute("id")).Equals(id)).ToList();
foreach (var varfield in varfields)
{
var nationality = GetSubFieldValue(varfield, "j");
string nationalityLookupValue = null;
if (nationality != null)
NationalityDictionary.TryGetValue(nationality, out nationalityLookupValue);
var role = GetSubFieldValue(varfield, "e");
string roleLookupValue = null;
if (role != null)
RoleDictionary.TryGetValue(role, out roleLookupValue);
var person = new Person()
{
Name = GetSubFieldValue(varfield, "a"),
LivingYears = GetSubFieldValue(varfield, "d"),
Nationality = nationalityLookupValue ?? nationality,
Role = roleLookupValue ?? role,
ReferredWork = GetSubFieldValue(varfield, "t")
};
string tempName = GetSubFieldValue(varfield, "a");
if (tempName != null)
person.InvertName(tempName);
if (!string.IsNullOrEmpty(person.Name) && !persons.Any(x => x.Name.Equals(person.Name)))
{
persons.Add(person);
}
}
return persons;
}