public static ExtList <PatriarchObj> GetPatriarchsLinks(IBaseContext context, int gensMin, bool datesCheck, bool loneSuppress) { ExtList <PatriarchObj> patList = GetPatriarchsList(context, gensMin, datesCheck); IProgressController progress = AppHost.Progress; progress.ProgressInit(LangMan.LS(LSID.LSID_LinksSearch), patList.Count); try { int num2 = patList.Count; for (int i = 0; i < num2; i++) { PatriarchObj patr = patList[i]; for (int j = i + 1; j < num2; j++) { PatriarchObj patr2 = patList[j]; GEDCOMIndividualRecord cross = TreeTools.PL_SearchDesc(patr.IRec, patr2.IRec); if (cross != null) { patr.HasLinks = true; patr2.HasLinks = true; if (cross.Sex == GEDCOMSex.svFemale) { patr.Links.Add(patr2); } else { patr2.Links.Add(patr); } } } progress.ProgressStep(); } } finally { progress.ProgressDone(); } if (loneSuppress) { for (int i = patList.Count - 1; i >= 0; i--) { PatriarchObj patr = patList[i]; if (!patr.HasLinks) { patList.Delete(i); } } patList.Pack(); } return(patList); }