我尝试从 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、索引并检查它们
只需在
.ToArray()
之后添加 .ToList()
或 .GetRecords<Cars>()
:
var records = csv.GetRecords<Cars>().ToArray();
在文档:
GetRecords 方法将返回一个 IEnumerable,该 IEnumerable 将产生 记录。这意味着只返回一条记录 迭代记录的时间。