Как сохранить данные CSV в массиве в C #? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть файл CSV, в котором есть 9 столбцов .(Дата, DrawNumber, N1, N2, N3, N4, N5, N6, B1)

Ниже приведенных столбцов 55 строк данных.

Данные встроки разделяются разделителем (,).


1) В консольном приложении пользователь вводит 6/7 чисел, которые будут сохранены.

2.) Какчитать и сохранять данные CSV в массив (ы) таким образом, чтобы можно было подсчитать, сколько раз каждое число (из набора, введенного пользователями, набора из 6 или 7 чисел) было найдено во всем CSV (из этих столбцов: N1, N2, N3, N4, N5, N6, В1).Пример: число 33 = найдено 12 раз, число 14 найдено 11 раз, ... (и т. Д. Для оставшихся введенных чисел)

3.) Из 6 или 7 чисел, которые будет вводить пользовательМне также нужно посмотреть, сколько цифр (из ввода пользователя) будет соответствовать каждой строке CSV.Другими словами, я должен сопоставлять комбинации для каждой строки (N1, N2, N3, N4, N5, N6, B1)


Какой наилучший способ чтения и хранения данных позволяеттакие манипуляции с данными?(Ваш пример кода будет оценен)?

Заранее спасибо.

ПРИМЕР ДАННЫХ CSV:

EXAMPLE OF CSV DATA:

1 Ответ

0 голосов
/ 07 марта 2019

создать класс, соответствующий столбцу скажем, наличие 9 столбцов означает 9 свойств.

public class CsvData
{
    public string column1 { get; set; }
    public string column2 { get; set; }
    public string column3 { get; set; }
    public string column4 { get; set; }
    public string column5 { get; set; }
    public string column6 { get; set; }
    public string column7 { get; set; }
    public string column8 { get; set; }
    public string column9 { get; set; }
}

когда теперь не отображать файл CSV в список объекта CsvData

public List<CsvData> ReadCsv(string file)
{
    List<CsvData> collection = new List<CsvData>();
    using (var streamReader = new StreamReader(file))
    {
        while (!streamReader.EndOfStream)
        {
            string[] columns = streamReader.ReadLine().Split(';');

            CsvData data = new CsvData();
            data.column1 = columns[0];
            data.column2 = columns[1];
            data.column3 = columns[2];
            data.column4 = columns[3];
            data.column5 = columns[4];
            data.column6 = columns[5];
            data.column7 = columns[6];
            data.column8 = columns[7];
            data.column9 = columns[8];

            collection.Add(data);
        }
    }

    return collection;
}

Теперь для вычисления строк, содержащих число или термин

public int CountRowsWithTerm(List<CsvData> collection, string term)
{
    List<CsvData> RowsContainingTheTerm = collection.Where(row => row.column1 == term || row.column2 == term || row.column3 == term ||
                            row.column4 == term || row.column5 == term || row.column6 == term ||
                            row.column7 == term || row.column8 == term || row.column9 == term).ToList();
    return RowsContainingTheTerm.Count();
}

надеюсь, что это помогло

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...