Tablica – Importowanie danych z pliku
Tematem tego wpisu będzie Importowanie danych z pliku, który zawiera informacje o populacji ludności w miastach wojewódzkich w Polsce. Dane te pochodzą z zewnętrznego pliku danych, pliku CSV, a nasz kod będzie musiał odczytać ten plik do tablicy aby nasza aplikacja mogła korzystać z tych danych i wyświetlić je na ekranie.
Na starcie nasza aplikacja po prostu wyświetli listę 7 najbardziej zaludnionych miast w Polsce w kolejności od najbardziej zaludnionego miasta. Zacznijmy!
Zaczynamy od utworzenia prostej klasy miasto, która to klasa będzie reprezentować pojedyncze miasto w Polsce. Napiszemy teraz potrzebny nam kod.
public class City
{
public string CityName { get; }
public string CityCode { get; }
public string Country { get; }
public int TotalPopulation { get; }
public int MenPopulation { get; }
public int WomenPopulation { get; }
public City(string cityName,
string cityCode,
string country,
int totalPopulation,
int menPopulation,
int womanPopulation)
{
CityName = cityName;
CityCode = cityCode;
Country = country;
TotalPopulation = totalPopulation;
MenPopulation = menPopulation;
WomanPopulation = womanPopulation;
}
}
Co dzieje się w naszej klasie. Nie dzieje się tutaj nic niezwykłego. Nasza klasa miasto zawiera tylko właściwości do odczytu dla :
nazwy miasta, kodu miasta , państwa które są zadeklarowane jako stringi
i całkowitą populacje ludności i całkowitą populację mężczyzn i całkowitą populację kobiet zadeklarowaną jak int (liczba całkowita).
Konstruktor wymaga dostarczenia wszystkich tych informacji w czasie tworzenia instancji klasy, i klasa ta jest zasadniczo tylko workiem na dane tylko do odczytu.
Teraz utworzymy klasę CsvReader, które będzie obsługiwać odczyt pliku CSV.
public class CsvReader
{
private string _csvFilePath;
public CsvReader(string csvFilePath)
{
_csvFilePath = csvFilePath;
}
public City[] ReadFirstNCitys(int nCitys)
{
return null;
}
}
Klasa ta zawiera pole, które przechowuje ścieżkę do pliku danych CSV, i konstruktor, który oczekuje tej ścieżki do pliku, a następnie jest metoda nazwana ReadFirstNCitys.
Będzie to metoda, która importuje tyle miast z pliku ile chcemy. Jako parametr przyjmuje liczbą całkowitą, która mówi ile miast ma odczytać z pliku, i zwraca tablicę miast. I ta metoda nie została jeszcze skończona w tym momencie jest to pusta metoda która zwraca tylko null.
A użycie tej metody która zwraca null pokazuje ważną kwestię dotyczącą tablic.
Mimo całej ich unikalnej składni z nawiasami kwadratowymi, tablica jest całkowicie normalnym typem referencyjnym. Możemy traktować je tak jak każdy inny typ referencyjny i możemy ustawić ją na wartość null i możemy zwrócić ją z funkcji.
Przejdźmy teraz do głównej metody programu, która kontroluje ogólną logikę aplikacji. Napiszemy teraz potrzebny nam kod.
static void Main(string[] args)
{
string filePath = @"C:\repos\population.csv";
CsvReader csvReader = new CsvReader(filePath);
City[] citys = csvReader.ReadFirstNCiyts(7);
foreach (var city in citys)
{
Console.WriteLine($"{city.TotalPopulation} :
{city.CityCode} :
{city.CityName}");
}
}
Pierwszą rzeczą jaką tutaj robimy to jest ustawienie sciezki do pliku danych CSV.
Aby zachować prosty przykład, zakodujemy na stałe scieżkę do lokalizacji pliku w moim systemie a następnie tworzymy instancję klasy CsvReader.
Potem deklarujemy tablicę z miastami i tworzymy jej instancje ustawiając ją równą temu, co zwraca metoda ReadFirstNCitys. I przekazujemy do metody liczbe siedem ponieważ chcemy pobrać tylko siedem miast.
Następnie mam pętlę foreach, która służy do wyświetlenia wszystkich pobranych miast. I wyświetlam tylko populację całkowitą, kod miasta i nazwę miasta.
Jeśli sprubujesz teraz uruchomić aplikację, to ona nie zadziała dostaniemy wyjątek NullReferenceException w miejscu, w którym chcemy iterować nasze miasta z tablicy miast a to dla tego że nie mamy jeszcze zaimplementowanej metody ReadFirstNCitys która ma pobierać miasta z pliku w tej chwili metoda zwraca tylko null.
Nasza zmienna miasta zwraca null i gdy wchodzimy do pętli nie możemy iterować się po pustej kolekcji. Zmienna po której iterujemy w pętli musi mieć rzeczywiste wartości. Musimy więc zaimplementować metodę ReadFirstNCitys która ma pobierać miasta z pliku prawidłowo aby nie zwracała nulla. I to zrobimy już w kolejnym wpisie.
Całościowe omówienie tematu kolekcji (tablica, lista, kolejka, stos, słownik).
Wiele przydatnych wskazówek i dobrych praktyk dostępne jest na kursie:
Great post! We are linking to this great article on our site. Keep up the great writing. Dinny Ben Cristobal
thanks
Fabulous, what a webpage it is! This webpage provides useful facts to us, keep it up. Bambi Nickie Wenonah
thanks
Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me. Anyways, I’m definitely happy I found it and I’ll be book-marking and checking back frequently!
thanks
You made some nice points there. I looked on the internet for the subject matter and found most individuals will agree with your site.
thanks
Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me. Anyways, I’m definitely happy I found it and I’ll be book-marking and checking back frequently!
thanks
I cannot thank you enough for the blog.Really thank you! Great. Antoinette Agin
thanks
Appreciate you sharing, great blog article.Much thanks again. Really Cool. Burl Rindler
thanks
Thanks for the post.Really thank you! Much obliged. Luana Czolba
thanks
Hej, dzięki za artykuł. Świetny. Miquel Battersby
thanks
I regard something genuinely special in this website. Carlita Fields Boggers
thanks
I really like and appreciate your article. Much thanks again. Awesome. Cary Colman Mientao
You ought to be a part of a contest for one of the most useful sites on the internet. Tobye Eugenius Hiram
I really liked your article post. Really looking forward to read more. Much obliged. Krista Umberto Vorster
Hi to all, how is everything, I think every one is getting more from this website, and your views are pleasant for new users. Mavra Penn Minnie
A cool blog post right there mate ! Thanks for the post . Daisie Tann Fleck
Right here is the right webpage for anybody who wishes to find out about this topic. Dominga Gregoire Lyndel
I am forever thought about this, appreciate it for posting. Anastasia Omero Hortense
Peculiar article, totally what I wanted to find.
I’ve been surfing online greater than three hours as of late, yet I by no means found any fascinating article like yours. It¡¦s lovely value enough for me. In my view, if all site owners and bloggers made just right content as you probably did, the internet can be much more useful than ever before.
Pretty section of content. I simply stumbled upon your weblog and in accession capital to claim that I get actually enjoyed account your blog posts. Raeann Maximilianus Cesaro
Great looking website. Presume you did a great deal of your very own coding. Trixy Fulton Massie
Having read this I thought it was very enlightening. I appreciate you spending some time and energy to put this informative article together. Jeniece Grant Alfred
It’s not my first time to go to see this site, i am visiting this web page
dailly and take fastidious facts from here every day.
Awesome post. I am a regular visitor of your site and appreciate you taking the time to maintain the excellent site. I will be a regular visitor for a long time. Marissa Leeland Enrico
If you are going for best contents like I do, only visit this web site everyday since it provides feature contents, thanks| Livia Bartholemy Vivyanne
Asking questions are genuinely good thing if you are not understanding anything totally, however this post offers good understanding yet.| Morissa Stefan Isidore
Having read this I thought it was really enlightening. Vittoria Javier Muhammad
Hi, I read your blogs regularly. Your humoristic style is awesome, keep up the good work! Stacy Brucie Lindeberg
You have remarked very interesting points! ps nice site. Ardisj Malcolm Romonda
Hi! This is my first visit to your blog! We are a group of volunteers and starting a new project in a community in the same niche. Your blog provided us useful information to work on. You have done a extraordinary job! Jackqueline Dov Rolfe
The girl in the first white bikini picture that says after is not Scarlett. Angel Andros Gold
I really appreciate this post. I have been looking everywhere for this! Thank goodness I found it on Bing. You have made my day! Thank you again! Alia Arv Katheryn
whoah this weblog is great i really like reading your posts. Stay up the good paintings! You know, many persons are looking round for this information, you can help them greatly. Dede Hewie Aleedis
Hi, i believe that i noticed you visited my site so i got here to return the choose?. I am attempting to find issues to enhance my web site!I assume its ok to use some of your ideas!!| Damaris Halsey Reagen
Everything is very open with a very clear description of the challenges. It was truly informative. Your site is very helpful. Thanks for sharing! Ree Chrisse Pike
An outstanding share! I have just forwarded this onto a friend who was conducting a little homework on this. Gnni Boony Padget
After checking out a number of the blog posts on your website, I truly like your technique of blogging. I saved it to my bookmark website list and will be checking back in the near future. Please visit my web site too and tell me what you think. Tricia Jarrett Gazo
It is appropriate time to make some plans for the future and it is time to be happy. I have read this post and if I could I want to suggest you few interesting things or suggestions. Perhaps you could write next articles referring to this article. I wish to read even more things about it! Katerina Osgood Guenna
Hey there! Would you mind if I share your blog with my myspace group? Hayley Leonhard Sale
Cheers to you, I realized something new. Thank you so much. I actually seem forward to working with you. Cora Benedicto Calandra
Have you ever thought about publishing an ebook or guest authoring on other blogs? Marita Salomo Procora
Thanks for sharing your info. I truly appreciate your efforts and I am waiting for your next write ups thanks once again. Tamara Murry Shaddock
Today, while I was at work, my sister stole my iPad and tested to see if it can survive a thirty foot drop, just so she can be a youtube sensation. My iPad is now broken and she has 83 views. I know this is totally off topic but I had to share it with someone! Rachelle Cesaro Lach
Thanks for the good writeup. It if truth be told used to be a leisure account it. Glance complicated to far introduced agreeable from you! However, how could we keep in touch? Dolli Sutton Nepil
As soon as I detected this site I went on reddit to share some of the love with them. Babette Keene Sisto
You have noted terribly interesting points ! ps tight web web site here. Albertina Sullivan Jasmin
I do trust all of the ideas you have offered in your post. They are very convincing and will certainly work. Nonetheless, the posts are too quick for novices. May you please extend them a little from subsequent time? Thank you for the post. Darcy Ulrich Rives
I was curious if you ever thought of changing the layout of your blog? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having one or 2 pictures. Maybe you could space it out better? Allegra Creighton Rambow
I have read so many posts about the blogger lovers except this post is actually a pleasant article, keep it up. Edeline De Witt Rudd
I consider something truly special in this website. Megan Tito Milore
Way cool! Some extremely valid points! I appreciate you writing this article and also the rest of the site is really good.| Camella Augustine Dream
Undeniably believe that which you said. Your favourite reason seemed to be on the net the easiest thing to be aware of. I say to you, I certainly get annoyed at the same time as folks consider issues that they plainly do not know about. You controlled to hit the nail upon the top and outlined out the entire thing with no need side effect , people can take a signal. Will likely be back to get more. Thanks Lilllie Ravi Gaye
I just could not go away your website before suggesting that I extremely loved the standard info a person provide in your visitors? Is gonna be back frequently in order to check out new posts Laurette Urbanus Jessy
Thanks for sharing your thoughts about Sling TV. Regards Glennis Justis Karina
Thanks for the article post. Much thanks again. Great. Torie Thedrick Creedon
Hey there. I found your blog by way of Google while searching for a comparable topic, your website came up. It appears great. I have bookmarked it in my google bookmarks to visit then. Dominga Giff Margy
Your site is very helpful. Many thanks for sharing! Katerina Shaw Boak
thanks
Greetings! Very useful advice within this post! It is the little changes that make the biggest changes. Thanks a lot for sharing! Scarlet Bryant Scornik
thanks
Simply wish to say your article is as astounding. The clearness in your post is simply nice and i could assume you are an expert on this subject. Fine with your permission allow me to grab your RSS feed to keep updated with forthcoming post. Thanks a million and please carry on the gratifying work. Candis Judah Uzzial
thanks
Nice blog here! Also your site loads up very fast! Aggi Robinet Goto
thanks
Good post! We will be linking to this particularly great article on our website. Keep up the good writing. Melinda Dore Eloisa
thanks
Even if you watch every pro game available, there is always more technical information you can know. Izabel Kahaleel Steele
Excellent post! We are linking to this great post on our site. Keep up the good writing. Denys Marijn Hutchings
thanks
Thanks to my father who informed me regarding this website, this blog is truly awesome. Darell Gabe Winnie
thanks
I used to be able to find good info from your blog posts. Flora Asher Dowling
thanks
Very good article post. Really thank you! Fantastic. Lisette Beltran Goff
thanks
Every weekend i used to pay a quick visit this website, because i wish for enjoyment, as this this web page conations actually pleasant funny information too.| Regine Ban Cusick
thanks
Dostałem się tutaj przypadkiem ale zostane na dłużej good job!
dzięki
cześć bardzo dobry materiał, dzieki
dzieki
tak trzymaj, pisz więcej…
dzięki
No hej!bardzo dobry materiał woww…
dzieki
Cóż, naprawdę mi się podobało. Ten oferowany przez Ciebie temat jest bardzo przydatny…
dzieki
Uwielbiam twoją stronę internetową.
dzieki
Dzięki, już od dłuższego czasu szukałem informacji na ten temat, a Twoja jest najlepsza, o jakiej się do tej pory dowiedziałem.
dzieki
dobry materiał, dobry blog!
dzieki
Witam! Chciałbym tylko podziękować za doskonałe informacje, które masz w tym poście. Wkrótce wrócę na Twoją stronę internetową po więcej.
dzieki
Cieszę się, że mogę rzucić okiem na ten post na blogu, który zawiera wiele cennych informacji, dzięki za dostarczenie tego rodzaju informacji.
dzieki
Cześć, codziennie czytam Twoje blogi. Twój styl pisania jest dowcipny, kontynuuj dobrą robotę!
dzieki
Twój styl jest bardzo wyjątkowy w porównaniu z innymi ludźmi, od których czytałem. Dziękuję za wiadomości. Chyba po prostu zaznaczę ten blog w książce.
dzieki
Chciałbym bardzo podziękować za miłe informacje, które masz w tym poście. Powinienem wrócić do Twojej witryny później.
dzieki
naprawde dobra robota trzymaj tak dalej
dzieki
Naprawdę podoba mi się ta strona, ma fajne rzeczy.
dzieki
Dostaję bardzo przydatne informacje na twojej stronie, czuję się szczęśliwy Miś
dzieki
excellent joob
thanks
Jestem pod ogromnym wrażeniem twoich umiejętności pisania, a także układu twojego bloga. Czy to płatny motyw, czy też dostosowałeś go samodzielnie? Tak czy inaczej, zachowaj dobrą jakość pisania, dziś rzadko spotyka się świetny blog, taki jak ten.
dzieki
dobra robota, polecam każdemu
dzieki
Ten wyjątkowy blog jest bez wątpienia niesamowity, dodatkowo rzeczowy. Znalazłem w nim wiele przydatnych rzeczy. Uwielbiam wracać od czasu do czasu. Wielkie dzięki!
dzieki
Bloguję dość często i naprawdę doceniam twoje informacje. Ten wspaniały artykuł naprawdę wzbudził moje zainteresowanie. Zamierzam dodać Twojego bloga do zakładek i sprawdzać nowe informacje raz w tygodniu. Zdecydowałem się również na Twój kanał RSS.
dzieki
Wow, niesamowita struktura bloga! Od jak dawna prowadzisz bloga? ułatwiasz przeglądanie bloga. Pełny widok Twojej witryny jest świetny, tak samo schludny, jak zawartość!
dzieki
Odwiedziłem wiele stron internetowych, i ta jest naprawde dobra
dzieki
Dobry artykuł. Zawsze podążaj za swoią pasją.
dzieki
Naprawdę lubię analizować tę witrynę internetową, ma świetne posty. Pet Vincenz Burnett
dzieki
Myślę, że zauważyłeś kilka bardzo interesujących szczegółów, dziękuję za post. Marissa Devlin Ondrej
dzieki
Od razu pobiorę Twój kanał rss, ponieważ nie mogę znaleźć hiperłącza do subskrypcji e-mail lub usługi e-biuletynu. Czy masz jakieś? Proszę pozwolić mi zrozumieć, abym mógł zasubskrybować. Dzięki. Melisandra Peadar Procora
dzieki
Świetny blog! Dodatkowo Twoja strona internetowa działa bardzo szybko! Z jakiego hosta internetowego korzystasz? Czy mogę otrzymać hiperłącze partnerskie dla twojego hosta? Chciałbym, żeby moja strona ładowała się tak szybko, jak twoja lol Charlene Turner Feldt
dzięki
Naprawdę doceniam udostępnienie tego posta na blogu. Naprawdę dziękuję! Pisz dalej. Loise Ellis Fishman
dzięki
Tak czy inaczej, zachowaj dobrą jakość pisania, obecnie rzadko spotyka się fajny blog, taki jak ten. | Stephannie Kristofor Batha
dzieki
Hej, to świetny post. Czy mogę użyć jego części w mojej witrynie? Oczywiście podałbym link do Twojej witryny, aby ludzie mogli przeczytać cały artykuł, gdyby chcieli. Dzięki tak czy inaczej. Kata Darin Genisia
oczywiście, dzięki
Someone necessarily assist to make significantly posts I would state.
That is the first time I frequented your website page and so far?
I amazed with the research you made to make this particular submit incredible.
Great task!
thanks
Hola! I’ve been reading your web site for some time now and
finally got the courage to go ahead and give you a shout out from
Austin Tx! Just wanted to tell you keep up the excellent
job!
thanks
Hi there to every one, the contents present at this site are actually awesome for people experience, well, keep up the good work fellows
Attractive section of content. I just stumbled upon your
website and in accession capital to assert that I get in fact enjoyed account your blog posts.
Anyway I’ll be subscribing to your augment and even I achievement you access consistently fast.
Just desire to say your article is as astounding.
The clarity to your submit is simply spectacular and i could think you’re a professional in this subject.
Fine with your permission let me to grasp your feed to keep updated with coming near near post.
Thank you a million and please carry on the enjoyable work.
bardzo wartosciowy materiał!
dzieki
Hi, every time i used to check website posts here in the early hours in the morning,
as i enjoy to find out more and more.
Everyone loves what you guys are usually up too.
This kind of clever work and exposure! Keep up the
amazing works guys I’ve included you guys to blogroll.
Hi there! This article could not be written any better! Looking through this article reminds
me of my previous roommate! He constantly kept talking about this.
I most certainly will send this post to him. Pretty sure he’s going
to have a very good read. Many thanks for sharing!
Znalezienie dowolnego tematu jest bardzo łatwe w porównaniu z książkami, ponieważ znalazłem ten post na tej stronie.
thanks
good job, thanks
Twój artykuł jest jak mała skarbnica wiedzy.
Generally I don’t learn post on blogs, however I would like to say that this write-up very compelled me to try and do it!
Your writing style has been amazed me. Thank you, very great article.
Nice blog, very nice articles! Add favorite thanks.
Nice blog, very nice articles! Add favorite thanks.
Nice blog! Thanks you all star articles good story!
Nice blog! Thanks you all star articles good story!
Everything is very open with a precise clarification of tthe challenges.
It was really informative. Youur site is very helpful. Thanks for
sharing!
thanks
Thanks in fagor of sharing such a pleasant idea, artile is nice, thats
why i have read it completely
thanks very much
Świetny artykuł! Bardzo dobrze przedstawione zagadnienie. Dodałeś/aś dużo wartości do mojej wiedzy
Ciekawy punkt widzenia. Wartościowe spojrzenie na temat