Пример #1
0
        public void ReadFirstObjectTest()
        {
            StreamReader file = new StreamReader(filePath);
            string       actualHeaderString = file.ReadLine();
            string       objectLine         = file.ReadLine();

            string[] objectFields = objectLine.Split(";");
            VDModel  vdModel      = new VDModel
            {
                Fylkenummer                        = objectFields[0],
                Fylkenavn                          = objectFields[1],
                Kommunenummer                      = objectFields[2],
                Kommunenavn                        = objectFields[3],
                Stemmekretsnummer                  = objectFields[4],
                Stemmekretsnavn                    = objectFields[5],
                Partikode                          = objectFields[6],
                Partinavn                          = objectFields[7],
                OppslutningProsentvis              = objectFields[8],
                AntallStemmeberettigede            = objectFields[9],
                AntallForhåndsstemmer              = objectFields[10],
                AntallValgtingstemmer              = objectFields[11],
                AntallStemmerTotalt                = objectFields[12],
                EndringProsentSisteTilsvarendeValg = objectFields[13],
                EndringProsentSisteEkvivalenteValg = objectFields[14],
                AntallMandater                     = objectFields[15],
                AntallUtjevningsmandater           = objectFields[16]
            };

            Assert.Equal("Østfold", vdModel.Fylkenavn);
            Assert.Equal("3", vdModel.AntallMandater);
        }
Пример #2
0
        /// <summary>
        /// Reads any .csv file in the default format specified at https://www.valgresultat.no and creates an array of VDModel objects based on the schema.
        /// </summary>
        /// <param name="filePath">The relative or absolute path of the file being read, has to be .csv and cannot contain semicolon (;) in any of its fields as that is the delimiter used.</param>
        /// <returns>An array of VDModel objects that can be used for simple in-memory queries or populating a database.</returns>
        public static VDModel[] CsvToVdArray(string filePath)
        {
            List <VDModel> objects            = new List <VDModel>();
            StreamReader   file               = new StreamReader(filePath);
            string         actualHeaderString = file.ReadLine(); // Skip
            string         currentLine;

            while ((currentLine = file.ReadLine()) != null)
            {
                string[] objectFields = currentLine.Split(";");
                if (objectFields.Length != 18)
                {
                    throw new CsvFileFormatException($"Found a line with length {objectFields.Length} instead of the required 18.", filePath, currentLine);
                }
                VDModel currentObject = new VDModel
                {
                    Fylkenummer                        = objectFields[0],
                    Fylkenavn                          = objectFields[1],
                    Kommunenummer                      = objectFields[2],
                    Kommunenavn                        = objectFields[3],
                    Stemmekretsnummer                  = objectFields[4],
                    Stemmekretsnavn                    = objectFields[5],
                    Partikode                          = objectFields[6],
                    Partinavn                          = objectFields[7],
                    OppslutningProsentvis              = objectFields[8],
                    AntallStemmeberettigede            = objectFields[9],
                    AntallForhåndsstemmer              = objectFields[10],
                    AntallValgtingstemmer              = objectFields[11],
                    AntallStemmerTotalt                = objectFields[12],
                    EndringProsentSisteTilsvarendeValg = objectFields[13],
                    EndringProsentSisteEkvivalenteValg = objectFields[14],
                    AntallMandater                     = objectFields[15],
                    AntallUtjevningsmandater           = objectFields[16]
                };
                objects.Add(currentObject);
            }
            return(objects.ToArray <VDModel>());
        }