public List <List <String> > BestimmeSchuelerDieNichtInAndererListeEnthaltenSind(List <List <String> > AndereSchuelerListe)
        {
            // Grundaufbau der zu vergleichenden Listen : JGKZ - Klasse - Name - Vorname
            List <List <String> > returnList   = new List <List <String> > {
            };
            List <List <String> > ArbeitsListe = new List <List <String> > {
            };

            foreach (List <String> Eintrag in SchuelerListe)
            {
                ArbeitsListe = SucheListenEintragAnhandSuchEintrag(Eintrag, AndereSchuelerListe);

                if (ArbeitsListe.Count < 0)
                {
                    // Wenn man das so macht hat man am Ende in der Liste unterschiedlich lange Sublisten. Dann gibts immer IndexOutOfBoundsException. Garnicht geil...
                    // ListeDerSchuelerDieNichtInAndererListeEnthaltenSind.Add(Eintrag);

                    while (Eintrag.Count <= SchuelerListe[0].Count)
                    {
                        Eintrag.Add("n.n");
                    }

                    returnList.Add(Eintrag);
                }
            }

            return(returnList);
        }
        public List <List <String> > BestimmeSchuelerMitVeraenderungenInAndererSchuelerListe(List <List <String> > AndereSchuelerListe)
        {
            // Grundaufbau der zu vergleichenden Listen : JGKZ - Klasse - Name - Vorname
            List <List <String> > ListeDerSchuelerDieNichtInAndererListeEnthaltenSind;
            List <List <String> > ListeDerSchuelerMitVeraenderungen          = new List <List <String> > {
            };
            List <String> IDListeSchuelerDieNichtInAndererListeEnthaltenSind = new List <String> {
            };

            ListeDerSchuelerDieNichtInAndererListeEnthaltenSind = BestimmeSchuelerDieNichtInAndererListeEnthaltenSind(AndereSchuelerListe);
            foreach (List <String> Eintrag in ListeDerSchuelerDieNichtInAndererListeEnthaltenSind)
            {
                IDListeSchuelerDieNichtInAndererListeEnthaltenSind.Add(BildeSuchName(Eintrag));
            }

            foreach (List <String> Eintrag in SchuelerListe)
            {
                String VergleichsName = BildeSuchName(Eintrag);
                if (!IDListeSchuelerDieNichtInAndererListeEnthaltenSind.Contains(VergleichsName))
                {
                    foreach (List <String> AndererEintrag in AndereSchuelerListe)
                    {
                        String AndererVergleichsName = BildeSuchName(AndererEintrag);

                        // bewusst unscharfer Test nötig  (z.B. 5 Vornamen !)
                        if (VergleichsName.Contains(AndererVergleichsName) || AndererVergleichsName.Contains(VergleichsName))
                        {
                            if (!(Eintrag[0].Equals(AndererEintrag[0]) && Eintrag[1].Equals(AndererEintrag[1])))
                            {
                                while (Eintrag.Count <= SchuelerListe[0].Count)
                                {
                                    Eintrag.Add("n.n");
                                }

                                ListeDerSchuelerMitVeraenderungen.Add(Eintrag);
                            }
                        }
                    }
                }
            }

            return(ListeDerSchuelerMitVeraenderungen);
        }