private static ObiektSwde[] GetPunktyGraniczne(DokumentSwde dokument, RekordLiniowySwde rekordLiniowy, out int punktyNiegraniczne) { List <ObiektSwde> punktyGraniczne = new List <ObiektSwde>(); HashSet <RekordId> rekordyDodane = new HashSet <RekordId>(); punktyNiegraniczne = 0; foreach (var linia in rekordLiniowy.Linie) { foreach (var pozycja in linia.Segmenty) { if (pozycja is PozycjaIdSwde || pozycja is PozycjaIdrSwde) { RekordSwdeBase rekord = pozycja.Rekord; if (rekordyDodane.Add(rekord.Identyfikator)) { punktyGraniczne.Add(dokument.createObiekt(rekord)); } } else { punktyNiegraniczne++; } } } return(punktyGraniczne.ToArray()); }
/// <summary> /// Zwraca obiekty będące w danej relacji z tym obiektem. /// </summary> /// <param name="nazwa">Nazwa/kod relacji (bez prefiksu).</param> public IEnumerable <ObiektSwde> GetRelacjaWielokrotna(string nazwa) { nazwa = RekordSwdeG5.NormalizujPrefiksAtrybutu(nazwa); IEnumerable <WiazanieSwdeBase> wiazania = _rekord.Wiazania.Where(r => r.Pole == nazwa); List <ObiektSwde> obiekty = new List <ObiektSwde>(); foreach (WiazanieSwdeBase wiazanie in wiazania) { RekordSwdeBase rekord = wiazanie.Rekord; //Obiekt odpowiadający rekordowi powinien już istnieć i dokument powinien posiadać instancję tego obiektu. obiekty.Add(_dokument.createObiekt(rekord)); } return(obiekty); }