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);
}
我有一个 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);
}