LINQ group by 和 writerecords

LINQ group by and writerecords

我有一个 csv 文件,其中包含卡通人物及其分类。我想按分类对它们进行分组,并根据分类对它们进行计数。我按照 Stack Overflow 上的答案解决了这个问题,但他们只是将结果写入控制台。我想用 csvhelper 将它写入 csv 文件,但我不知道如何。 例如: 输入:

id | classfication
1       Wolf 
2       Fish
3       Wolf

输出:

classfication | count
    Wolf          2
    Fish          1

代码(工作正常,我只是无法将其写入 CSV 文件):

            foreach (var line in list.GroupBy(info => info.classfication)
                        .Select(group => new {
                            Metric = group.Key,
                            Count = group.Count()
                        })
                        .OrderBy(x => x.Metric))
            {
                var one = line.Metric;
                var two = line.Count;
                full = one + two;
            
            
            using (var writer = new StreamWriter("Projects\Example\Output.csv"))
            using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
            {
                csv.WriteRecords(full.ToList()); //I don't know what to write here, instead of 'full'
            }
            }

CsvWriter 接受一个项目列表,它将被写入 CSV 格式。所以你不需要遍历列表(使用 foreach)。相反,首先创建 groupedList,然后将该列表写入文件:

// step 1, create the grouping
var groupedList = list.GroupBy(info => info.classification)
                  .Select(grp => new 
                   {
                      Metric = grp.Key,
                      Count = grp.Count()
                   }) 
                   .ToList();

// step 2, write to file
using (var writer = new StreamWriter("Projects\Example\Output.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(groupedList); 
}