只有第一个 LINQ .Count() 语句有效

问题描述 投票:0回答:1

我尝试从 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");
        }
       
    }
}

它不适用于地图或索引

我尝试更改 csv、索引并检查它们

c# csv linq
1个回答
0
投票

只需在

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

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

文档

GetRecords 方法将返回一个 IEnumerable,该 IEnumerable 将产生 记录。这意味着只返回一条记录 迭代记录的时间。

© www.soinside.com 2019 - 2024. All rights reserved.