Это очень похоже на данные о частоте переписных названий, верно? Пол является немного неправильным для вашего класса, это больше похоже на "FrequencyData".
Фактически вам нужен словарь, чтобы вы могли найти любое имя и получить для него четыре значения. Вы можете просто взять мужчин и сделать ToDictionary (...) для него, а затем перебрать женщин, если имя существует в словаре, заменить женские вероятности на нем, если его нет, создать новую запись словаря .
Мой собственный подход к этим же данным заключался в создании таблицы в базе данных со всеми четырьмя присоединенными значениями.
Вот код для вашего сценария ...
Dictionary<string, Gender> result;
result = males.ToDictionary(x => x.NameText, x => x.Gender);
foreach (var female in females)
{
if (result.ContainsKey(female.NameText))
{
result[female.NameText].FemaleCumulativeFrequency = female.Gender.FemaleCumulativeFrequency;
result[female.NameText].FemaleFrequency = female.Gender.FemaleFrequency;
}
else
result.Add(female.NameText, female.Gender);
}