Read Csv using LINQ

前端 未结 9 2148
无人及你
无人及你 2020-12-01 04:55

I am having a csv file like this

A, 22, 23, 12
B, 32, 4, 33
C, 34, 3 ,33

I want to print the sum and average of each row and skip the first

9条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-01 05:10

    Try to use this old but still good library: FileHelpers Library

    It's very easy to use:

    char delimiter = ',';
    var dt = FileHelpers.CsvEngine.CsvToDataTable(fileName,delimiter);
    

    then just do:

    var rowStats = dt.AsEnumerable()
                     .Select(x => x.ItemArray.Select(y => Convert.ToInt32(y)))
                     .Select(x => new { avg = x.Average(), sum = x.Sum() });
    
    foreach (var rowStat in rowStats)
    {
        Console.WriteLine("Sum: {0}, Avg: {1}", rowStat.sum, rowStat.avg);
    }
    

提交回复
热议问题