Как получить данные из CSV? - PullRequest
0 голосов
/ 19 июня 2020

Я создаю функцию для загрузки моего файла csv, но прямо сейчас я должен написать функции, которые извлекали бы c информацию из этого файла

моя функция:

        public List<string> loadCsvFile(string filePath)
        {
            var reader = new StreamReader(File.OpenRead(filePath));
            List<string> searchList = new List<string>();

            while(!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                searchList.Add(line);
            }
            return searchList;
        }

моя Столбцы файла csv:

ID | State | Country | Population

может кто-нибудь сказать мне, как создать функцию, которая может возвращать мне все данные для eq State name?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Для начала вы можете изучить основы парсера csv онлайн. Я предпочитаю создавать собственные, исходя из потребностей, вместо использования сторонних библиотек.

class Program
{
    /// <summary>The type that can be used to map csv data</summary>
    class CsvType
    {
        public string ID { get; set; }
        public string State { get; set; }
        public string Country { get; set; }
        public string Population { get; set; }
    }

    static void Main()
    {
        //csv line data to clr object transformation
        Func<string[], CsvType> transform = splittedProperties =>
                new CsvType
                {
                    ID = splittedProperties[0],
                    State = splittedProperties[1],
                    Country = splittedProperties[2],
                    Population = splittedProperties[3]
                };

        //Csv line to splitted based on some character 
        //For demonstration purpose i used comma. 
        //please take care when the columns data itself can contain splitter as value
        Func<string, string[]> splitter = line => line.Split(",");

        IEnumerable<CsvType> data = CsvParser<CsvType>("filepath", transform, splitter)
                                        .Where(x => x.State == "Your value");// U can apply an conditiion to filter and other opeartions too 

    }

    static IEnumerable<T> CsvParser<T>(string filePath,
            Func<string[], T> transform,
            Func<string, string[]> csvSplitter)
    {
        return File.ReadLines(filePath).Select(csvSplitter).Select(transform);
    }
}
0 голосов
/ 19 июня 2020

Ну, вы можете сделать все «сами», но вы также можете использовать библиотеку, например https://www.filehelpers.net/, что значительно упрощает задачу.

Но в целом создайте простой POCO class и обработать / разбить строки, например, на Список этого класса.

...