C# 耳鼻喉科?它看起来像CsvDataReader:IDataReader,如果您指的是这里的CsvHelper:@user3732793 define“native”;BCL只涵盖System.Data,它甚至不包括SqlDataReader——现在它被转移
C# 耳鼻喉科?它看起来像CsvDataReader:IDataReader,如果您指的是这里的CsvHelper:@user3732793 define“native”;BCL只涵盖System.Data,它甚至不包括SqlDataReader——现在它被转移,c#,.net-core,C#,.net Core,耳鼻喉科?它看起来像CsvDataReader:IDataReader,如果您指的是这里的CsvHelper:@user3732793 define“native”;BCL只涵盖System.Data,它甚至不包括SqlDataReader——现在它被转移到System.Data.SqlClient(一个辅助nuget包,而不是核心框架)或Microsoft.Data.SqlClient(值得注意的是:作为两个完全不同的实现);至于ORMs:微软为第一方提供EF,但这是否是“本机”是。。。复杂的
耳鼻喉科?它看起来像
CsvDataReader:IDataReader
,如果您指的是这里的CsvHelper:@user3732793 define“native”;BCL只涵盖System.Data,它甚至不包括SqlDataReader
——现在它被转移到System.Data.SqlClient
(一个辅助nuget包,而不是核心框架)或Microsoft.Data.SqlClient
(值得注意的是:作为两个完全不同的实现);至于ORMs:微软为第一方提供EF,但这是否是“本机”是。。。复杂的;许多非Microsoft工具可用。附加问题:看起来GetRecords
API是CsvReader
的一部分,所以。。。你为什么不直接用呢?谢谢你。后者看起来很有希望。后者看起来很有希望
public static List<Contract> readDataFile(string filePath)
{
List<Contract> contracts = new List<Contract> { };
using var reader = new StreamReader(filePath);
var config = new CsvConfiguration(CultureInfo.CurrentCulture) {
Delimiter = ";",
PrepareHeaderForMatch = args => args.Header.ToLowerInvariant()
};
using var csvReader = new CsvReader(reader, config);
{
csvReader.Context.RegisterClassMap<ContractMap>();
IEnumerable<Contract> dataContracts = csvReader.GetRecords<Contract>();
foreach (Contract c in dataContracts)
{
contracts.Add(c);
}
}
}