Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从csv检索的数据为0或空_C#_Csv_Asp.net Core_.net Core_Csvhelper - Fatal编程技术网

C# 从csv检索的数据为0或空

C# 从csv检索的数据为0或空,c#,csv,asp.net-core,.net-core,csvhelper,C#,Csv,Asp.net Core,.net Core,Csvhelper,我正在尝试从CSV导入一些数据到c#。我面临的问题是数据为0或null。尽管我将它们的标题映射为CSV标题 这是csv文件的一些照片,以及我在调试以下代码时得到的照片。我做错了什么 这是CSV的模型 public class CsvModel { [Name("EAN")] public string EAN { get; set; } [Name("Store Id")] public int StoreId { get; set; } [Name("

我正在尝试从CSV导入一些数据到c#。我面临的问题是数据为0或null。尽管我将它们的标题映射为CSV标题

这是csv文件的一些照片,以及我在调试以下代码时得到的照片。我做错了什么

这是CSV的模型

 public class CsvModel
{
    [Name("EAN")]
    public string EAN { get; set; }
    [Name("Store Id")]
    public int StoreId { get; set; }
    [Name("Quantity")]
    public int Quantity { get; set; }
    [Name("Amount")]
    public string Amount { get; set; }
    [Name("Date")]
    public string Date { get; set; }
}
这就是我检索它的方式

         public ActionResult Index( IFormFile uploadedFile)
    {
        if (ModelState.IsValid)
        {
            List<CsvModel> m = new List<CsvModel>();

            if (uploadedFile != null && uploadedFile.Length > 0)
            {

                if (uploadedFile.FileName.EndsWith(".csv"))
                {
                    using (var reader = new StreamReader(uploadedFile.OpenReadStream()))
                    using (var csv = new CsvReader(reader))
                    {

                        csv.Configuration.RegisterClassMap<CsvHeaderMap>();
                        var records = csv.GetRecords<CsvModel>();
                        foreach (var r in records)
                        {
                            CsvModel o = new CsvModel();
                            o.Date = r.Date;
                            o.Amount = r.Amount;
                            m.Add(r);
                        }
                    }

                }
                else
                {
                    ModelState.AddModelError("File", "This file format is not supported");
                    return View();
                }
            }
            else
            {
                ModelState.AddModelError("File", "Please Upload Your file");
            }
        }
        return View();
    }
public ActionResult索引(IFormFile uploadedFile)
{
if(ModelState.IsValid)
{
列表m=新列表();
if(uploadedFile!=null&&uploadedFile.Length>0)
{
if(uploadedFile.FileName.EndsWith(“.csv”))
{
使用(var reader=newstreamreader(uploadedFile.OpenReadStream()))
使用(var csv=新的CsvReader(读卡器))
{
csv.Configuration.RegisterClassMap();
var records=csv.GetRecords();
foreach(记录中的var r)
{
CsvModel o=新CsvModel();
o、 日期=r.日期;
o、 金额=r.金额;
m、 加(r);
}
}
}
其他的
{
AddModelError(“文件”,“不支持此文件格式”);
返回视图();
}
}
其他的
{
AddModelError(“文件”,“请上传您的文件”);
}
}
返回视图();
}
这就是我映射标题的方式

  public class CsvHeaderMap : ClassMap<CsvModel>
{
    public CsvHeaderMap()
    {
        Map(m => m.EAN).Name("EAN");
        Map(m => m.EAN).Name("Store Id");
        Map(m => m.EAN).Name("Quantity");
        Map(m => m.EAN).Name("Amount");
        Map(m => m.EAN).Name("Date");
    }
}
公共类CsvHeaderMap:ClassMap
{
公共CsvHeaderMap()
{
Map(m=>m.EAN).Name(“EAN”);
Map(m=>m.EAN).Name(“商店Id”);
地图(m=>m.EAN)。名称(“数量”);
地图(m=>m.EAN)。名称(“金额”);
地图(m=>m.EAN)。名称(“日期”);
}
}


您的手动类映射正在覆盖属性

public class CsvHeaderMap : ClassMap<CsvModel>
{
    public CsvHeaderMap()
    {
        Map(m => m.EAN).Name("EAN");
        Map(m => m.EAN).Name("Store Id");
        Map(m => m.EAN).Name("Quantity");
        Map(m => m.EAN).Name("Amount");
        Map(m => m.EAN).Name("Date");
    }
}
公共类CsvHeaderMap:ClassMap
{
公共CsvHeaderMap()
{
Map(m=>m.EAN).Name(“EAN”);
Map(m=>m.EAN).Name(“商店Id”);
地图(m=>m.EAN)。名称(“数量”);
地图(m=>m.EAN)。名称(“金额”);
地图(m=>m.EAN)。名称(“日期”);
}
}
请注意,在图像中,实际上只有最后一个贴图填充

或者修复映射以映射到适当的属性

public class CsvHeaderMap : ClassMap<CsvModel> {
    public CsvHeaderMap() {
        Map(m => m.EAN).Name("EAN");
        Map(m => m.StoreId ).Name("Store Id");
        Map(m => m.Quantity).Name("Quantity");
        Map(m => m.Amount).Name("Amount");
        Map(m => m.Date).Name("Date");
    }
}
公共类CsvHeaderMap:ClassMap{
公共CsvHeaderMap(){
Map(m=>m.EAN).Name(“EAN”);
Map(m=>m.StoreId).Name(“StoreId”);
地图(m=>m.Quantity)。名称(“数量”);
地图(m=>m.Amount)。名称(“金额”);
地图(m=>m.Date)。名称(“日期”);
}
}
或者完全删除它,让系统自动从属性中找出它