c#读取csv文件 按列读取分字典
时间: 2024-11-02 19:07:37 浏览: 45
在C#中,读取CSV文件并按列分割成字典,通常需要借助一些库如CsvHelper或使用`TextFieldParser`。这里我们假设已经安装了CsvHelper,这是一个方便处理CSV数据的库。
首先,确保已添加CsvHelper NuGet包:
```powershell
Install-Package CsvHelper
```
然后,我们可以按照以下步骤操作:
1. 创建一个映射类(Mapping Class),用于描述CSV字段与字典键的关系:
```csharp
public class MyDataClass
{
public string KeyColumn { get; set; } // 假设键列名为"KeyColumn"
public string ValueColumn { get; set; } // 假设值列名为"ValueColumn"
// 添加其他列的映射...
}
```
2. 读取CSV文件并转换为字典列表:
```csharp
using CsvHelper;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
List<MyDataClass> dataRows = new List<MyDataClass>();
using var reader = new StreamReader("yourfile.csv", Encoding.UTF8);
using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.MissingFieldFound += (_, fieldInfo) => throw new Exception($"Missing required field: {fieldInfo.Field.Name}");
dataRows = csv.GetRecords<MyDataClass>().ToList();
Dictionary<string, List<string>> dictionary = dataRows.ToDictionary(
dr => dr.KeyColumn,
dr => dr.ValueColumn.Split(',')
.Select(val => val.Trim())
.ToList()
);
```
上述代码会按`KeyColumn`字段作为字典的键,`ValueColumn`字段的内容拆分成列表存储。
阅读全文