我试着从CVS文件中获取数据,一切都很顺利,但我不能对它使用LINQ,第一条语句总是有效的,但接下来的语句总是返回0

CVS头:CAR_MAKE、CAR_MODEL、CAR_MODEL_Year、CAR_VIN

public static void Main(string[] args)
{
    using (var reader = new StreamReader("D:\\C#\\CSV_Deserialization\\obj\\Debug\\net7.0\\Cars1.csv"))
    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
    {
        //csv.Context.RegisterClassMap<MyCarMap>();
        var records = csv.GetRecords<Cars>();
           
        int HondaCounter = records.Count(car => car.CarMake == "Honda");
        int ChevroletCounter = records.Count(car => car.CarMake == "Chevrolet");
        int PontiacCounter = records.Count(car => car.CarMake == "Pontiac");

        Console.WriteLine(HondaCounter);
        Console.WriteLine(ChevroletCounter);
        Console.WriteLine(PontiacCounter);
          
    }
}
namespace CSV_Deserialization
{
    public class Cars
    {
        [Name("car_make")]
        public string CarMake { get; set;}
        [Name("car_model")]
        public string CarModel { get; set; }
        [Name("car_model_year")]
        public int CarModelYear { get; set; }
        [Name("car_vin")]
        public string CarVin {  get; set; }

    }
}

namespace CSV_Deserialization
{
    public class MyCarMap :ClassMap<Cars>
    {
        public MyCarMap()
        {
            Map(m => m.CarMake).Name("car_make");
            Map(m => m.CarModel).Name("car_model");
            Map(m => m.CarModelYear).Name("car_model_year");
            Map(m => m.CarVin).Name("car_vin");
        }
       
    }
}

它不适用于 map 或索引

我已try 更改CSV、索引并进行了判断

推荐答案

只需在.GetRecords<Cars>()之后添加.ToArray().ToList():

var records = csv.GetRecords<Cars>().ToArray();

GetRecords<T>方法将返回IEnumerable<T>.它一直在读取记录,直到第一个Count()呼叫结束,并一直指向第二个和第三个呼叫的结束.这就是为什么它只在第一次时返回正确的计数.

拨打ToArrayToList,我们就是materializing记录.

Csharp相关问答推荐

无法使用ternal- .net修复可空警告

Unity如何在PlayerPrefs中保存数据?

向类注入一个工厂来创建一些资源是一个好的实践吗?

. NET Core DB vs JSON模型设计

通过条件列表删除/更新EF Core 7中的实体的有效方法

如何分配对象后的class的属性?

如何模拟耐久任务客户端在统一测试和获取错误在调度NewsListationInstanceAsync模拟设置

如何在onNext之前等待订阅者完成?

.NET 8在appsettings.json中核心使用词典URI、URI&>

如何在.NET MAUI中最大化GraphicsView的大小?

如何在C#中从MongoDB IPipelineStageDefinition中获取聚合命令的字段/选项?

我是否应该注销全局异常处理程序

从MudAutoComplete打开对话框,列表仍然可见

无法向Unity注册Microsoft Logger

C#中COM对象的实际地址

如何在特定时间间隔运行多个后台任务?

NETSDK1201:对于面向.NET 8.0和更高版本的项目,默认情况下,指定RUNTIME标识符将不再生成自包含的应用程序

SignalR跨域

如何在C#中抽象Vector256;T<;的逻辑以支持不同的硬件配置?

Roslyn编译器看不到引用