示例#1
0
        public static Felvettek FromCsv(string csvLine)
        {
            string[]  values = csvLine.Split(',');
            Felvettek fv     = new Felvettek();

            fv.Nev    = values[0];
            fv.Irsz   = int.Parse(values[1]);
            fv.Nem    = values[2];
            fv.Neptun = values[3];
            return(fv);
        }
        public void OpenFiles()
        {
            // temp TODO
            GTB_LOCATION       = "D:\\Documents\\hk\\tesztadatok\\gtb.csv";
            FELVETTEK_LOCATION = "D:\\Documents\\hk\\tesztadatok\\info.csv";
            KOLI_LOCATION      = "D:\\Documents\\hk\\tesztadatok\\koli.csv";


            l_felv = File.ReadAllLines(FELVETTEK_LOCATION).Skip(1).Select(v => Felvettek.FromCsv(v)).ToList();
            l_koli = File.ReadAllLines(KOLI_LOCATION).Skip(1).Select(v => Koli.FromCsv(v)).ToList();
            l_gtb  = File.ReadAllLines(GTB_LOCATION).Skip(1).Select(v => Gtb.FromCsv(v)).ToList();

            l = (from felv in l_felv
                 join koli in l_koli on felv.Neptun equals koli.Neptun into temp
                 from koli in temp.DefaultIfEmpty()
                 join gtb in l_gtb on felv.Neptun equals gtb.Neptun into temp2
                 from gtb in temp2.DefaultIfEmpty()
                 select new Besorolando(
                     felv.Nev,
                     felv.Irsz,
                     felv.Neptun,
                     felv.Nem,
                     gtb == null ? "-" : gtb.GSzoba,
                     gtb == null ? "-" : gtb.Kartya,
                     koli == null ? -1 : koli.Szoba,
                     gtb == null ? "-" : gtb.Garda,
                     Szin.Szürke
                     )) /*.OrderByDescending(y => y.Kartya).ThenBy(z=>z.GSzoba)*/.ToList();

            List <Emelet> e = new List <Emelet>()
            {
                new Emelet(600, 699, Szin.Sárga, "Dr.Wu"),
                new Emelet(700, 799, Szin.Kék, "Nyuszi"),
                new Emelet(800, 899, Szin.Fekete, "Fekete"),
                new Emelet(900, 999, Szin.Piros, "TTNY"),
                new Emelet(1000, 1099, Szin.Fehér, "SIR")
            };

            // itt vannak elrendezve csoportok alapjan
            foreach (var golya in l)
            {
                foreach (var emelet in e)
                {
                    if (Enumerable.Range(emelet.Start, emelet.End).Contains(golya.Szoba) || golya.Garda.Equals(emelet.Gardanev))
                    {
                        golya.Szin = emelet.Color;
                    }
                }
            }
            l = l.OrderByDescending(x => x.Kartya).ThenBy(y => y.GSzoba).ThenBy(z => z.Szin).ToList();

            // kellene group by szin alapjan

            var teszt = l.GroupBy(x => x.Garda).Select(grp => grp.ToList()).ToList();//.OrderByDescending(x => x.Kartya).ThenBy(y => y.GSzoba).ThenBy(z => z.Szin).ToList();

            List <Besorolando> l2 = new List <Besorolando>();

            foreach (var item in teszt)
            {
                foreach (var item2 in item)
                {
                    l2.Add(item2);
                    //Console.WriteLine(item2);
                }
            }
            foreach (var item in l2)
            {
                Console.WriteLine(item);
            }


            // TODO itt kellene valahogyan a megadott szamu tankorbe szetrobbantani a tombot

            // 1st section: megcsinalunk minden szinbol legalabb egy fix tankort
            //List<Besorolando> kek_fix = new List<Besorolando>();
            //List<Besorolando> feher_fix = new List<Besorolando>();
            //List<Besorolando> piros_fix = new List<Besorolando>();
            //List<Besorolando> sarga_fix = new List<Besorolando>();
            //List<Besorolando> fekete_fix = new List<Besorolando>();
            //List<Besorolando> maradek = new List<Besorolando>();

            toadd_temp = new List <Besorolando_temp>();
            List <Besorolando> toadd_temp_rest = new List <Besorolando>();

            foreach (var item in l2)
            {
                switch (item.Garda)
                {
                case "Nyuszi":      // kek
                    toadd_temp.Add(new Besorolando_temp(item, 0));
                    break;

                case "SIR":         // feher
                    toadd_temp.Add(new Besorolando_temp(item, 1));
                    break;

                case "TTNY":        // piros
                    toadd_temp.Add(new Besorolando_temp(item, 2));
                    break;

                case "Dr.Wu":       // sarga
                    toadd_temp.Add(new Besorolando_temp(item, 3));
                    break;

                case "Fekete":      // fekete
                    toadd_temp.Add(new Besorolando_temp(item, 4));
                    break;

                default:            // the rest
                    toadd_temp_rest.Add(item);
                    break;
                }
            }
            // process the rest, and add them to toadd_temp
        }