.NET从EF 4.7.2升级到EF Core 8后LINQtoCSV引用缺失求助
解决.NET Core 8中LINQtoCSV引用丢失及安装问题
问题根源
原LinqToCsv包仅适配.NET Framework,未支持.NET Core/.NET 5+;而Threenine.LinqToCsv已从NuGet源下架或停止维护,导致无法找到安装包。
推荐解决方案:使用CsvHelper替代
CsvHelper是.NET生态中维护活跃、支持全面的CSV处理库,完美适配.NET Core 8,可完全替代原LINQtoCSV的功能。
安装CsvHelper
- Visual Studio图形界面:右键项目 → 管理NuGet程序包 → 搜索
CsvHelper→ 安装最新稳定版 - Package Manager Console命令:
Install-Package CsvHelper
- .NET CLI命令:
dotnet add package CsvHelper
替换原CsvColumnAttribute用法
原LINQtoCSV的特性可直接映射到CsvHelper的对应特性,示例如下:
原代码(LINQtoCSV):
public class MyCsvModel { [CsvColumn(Name = "用户ID", FieldIndex = 0)] public int UserId { get; set; } [CsvColumn(Name = "用户名")] public string UserName { get; set; } }
替换为CsvHelper写法:
using CsvHelper.Configuration.Attributes; public class MyCsvModel { [Name("用户ID")] [Index(0)] public int UserId { get; set; } [Name("用户名")] public string UserName { get; set; } }
基础读写示例
读取CSV:
using CsvHelper; using System.Globalization; using System.IO; using var reader = new StreamReader("data.csv"); using var csv = new CsvReader(reader, CultureInfo.InvariantCulture); var records = csv.GetRecords<MyCsvModel>().ToList();
写入CSV:
using CsvHelper; using System.Globalization; using System.IO; var records = new List<MyCsvModel> { new() { UserId = 1, UserName = "张三" }, new() { UserId = 2, UserName = "李四" } }; using var writer = new StreamWriter("output.csv"); using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); csv.WriteRecords(records);
若需保留原LINQtoCSV语法
可使用适配.NET Core的分支包LINQtoCSV.Core,安装命令:
dotnet add package LINQtoCSV.Core
安装后直接替换命名空间引用即可,无需修改原有CsvColumnAttribute的代码:
using LINQtoCSV; // 替换原using LinqToCsv;
内容的提问来源于stack exchange,提问作者user23750585
相关产品推荐
相关产品推荐

