private static void Fill2019YearData() { using var reader = new StreamReader("testdata.csv"); using var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture) { BadDataFound = null, Delimiter = "," }); while (csv.Read()) { var firstTimeString = true; Interviewee interviewee = null; var companies = csv.GetField <string>(22).Split("\n"); foreach (var company in companies) { var cs = company.Split(":"); var companyScore = new CompanyScore { IntervieweeId = csv.GetField <int>(0), CompanyName = cs[0].Trim('"'), IsKnown = cs[1].Trim().StartsWith("Знаю") || cs[1].Trim().Equals("Слышал"), IsWanted = cs[1].Trim().Equals("Знаю и хочу работать") || cs[1].Trim().Equals("Знаю и уважаю"), Age = csv.GetField <int>(8), City = csv.GetField <string>(7), Education = csv.GetField <string>(9), ExperienceLevel = csv.GetField <string>(11), ExperienceYears = csv.GetField <int>(10), Profession = csv.GetField <string>(12), ProgrammingLanguages = csv.GetField <string>(13).Split(",").Select(l => l.Trim()).ToList(), CompanySources = csv.GetField <string>(15).Split(",").Select(l => l.Trim()).ToList(), IsCommunity = csv.GetField <string>(18) == "Да", CommunitySource = csv.GetField <string>(19).Split(",").Select(l => l.Trim()).ToList(), }; if (!Companies.ContainsKey(companyScore.CompanyName)) { var c = new Company { Id = Guid.NewGuid(), Name = companyScore.CompanyName }; Companies.Add(c.Name, c); } if (firstTimeString) { foreach (var language in companyScore.ProgrammingLanguages) { if (!Languages.ContainsKey(language)) { var l = new Language { Id = Guid.NewGuid(), Name = language }; Languages.Add(l.Name, l); } } interviewee = new Interviewee { Id = Guid.NewGuid(), Age = companyScore.Age, City = companyScore.City, Education = companyScore.Education, Profession = companyScore.Profession, ProfessionLevel = companyScore.ExperienceLevel, VisitMeetups = companyScore.IsCommunity, Year = 2019, IsCommunity = companyScore.IsCommunity }; Interviewees.Add(interviewee); foreach (var language in companyScore.ProgrammingLanguages) { IntervieweeLanguages.Add(new IntervieweeLanguage { IntervieweeId = interviewee.Id, LanguageId = Languages[language].Id }); } if (companyScore.IsCommunity && companyScore.CommunitySource != null) { foreach (var ms in companyScore.CommunitySource) { if (!CommunitySources.ContainsKey(ms)) { var l = new CommunitySource { Id = Guid.NewGuid(), Name = ms }; CommunitySources.Add(l.Name, l); } IntervieweeCommunitySources.Add(new IntervieweeCommunitySource { IntervieweeId = interviewee.Id, CommunitySourceId = CommunitySources[ms].Id }); } } firstTimeString = false; } Answers.Add(new CompanyAnswer { Id = Guid.NewGuid(), IntervieweeId = interviewee.Id, CompanyId = Companies[companyScore.CompanyName].Id, IsKnown = companyScore.IsKnown, IsGood = companyScore.IsWanted, IsWanted = companyScore.IsWanted }); } } }