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);
            }
        }
    }