csvHelper将来自不同行的值放入数据库中的一个文件中

如何解决csvHelper将来自不同行的值放入数据库中的一个文件中

我有一个.csv文件,其结构是这样的,第一行是标题列,对于每个SomeID,我需要将NetCharges加在一起(或在代码要求的情况下减去),然后通过SomeCode列。

这里收到了我收到的文件; SomeID,OrderNumber,Code,NetCharge,Total 23473,30388,LI 126.0000,132.00 96021,000111,LI,130.00,126.00 23473,30388,FU 6.0000,132.00 4571A,10452,LI,4100.0000,4325.0000 4571A,10452,FU,150.00,4325.0000 4571A,10452,DT,75.00,4325.0000

我需要将数据插入结构如下的sql表中。这是我的目标:

ID OrderNumber licode licodeValue FUCode FUCodeValue DTCode,DTCodeValue总计 23473 30388n LI 126.000 FU 6.0000 NULL NULL 132.0000 4571A 10452 LI 4100.0000 FU 150.0000 DT 75.00 4325.0000

我的SomeID不会总是像4571A id一样分组在一起,我基本上需要遍历此文件并为每个SomeID创建一条记录。我似乎找不到使用csvHelper的方法。我正在使用C#和csvHelper。到目前为止,我已经尝试过了这一点,但是在传递给nexr一个之后,我无法回到SomeId: 使用(var reader = new StreamReader(“ C:\ testFiles \ some.csv”))

        using (var csv = new CsvReader( reader,CultureInfo.InvariantCulture ))
        {
            
            var badRecords = new List<string>();
            var isRecordBad = false;

            csv.Configuration.HasHeaderRecord = true;
            csv.Configuration.HeaderValidated = null;
            csv.Configuration.IgnoreBlankLines = true;
            csv.Configuration.Delimiter = ",";

            csv.Configuration.BadDataFound = context =>
            {
                isRecordBad = true;
                badRecords.Add( context.RawRecord );
            };
            csv.Configuration.MissingFieldFound = ( s,i,context ) =>
            {
                isRecordBad = true;
                badRecords.Add( context.RawRecord );
            };

            List<DataFile> dataFile = csv.GetRecords<DataFile>().ToList();

            //initialize variable
            string lastSomeId = "";

            if (!isRecordBad)
            {
                foreach (var item in dataFile)
                {
                    // check if its same record
                    if (lastSomeId != item.someID)
                    {
                        MyClass someClass = new MyClass();
                        lastSomeId = item.someID;
                        //decimal? LI = 0;//was going to use these as vars for calculations not sure I need them???
                        //decimal? DSC = 0; 
                        //decimal? FU = 0;

                       
                        someClass.Id = lastSomeId;
                        someClass.OrdNum = item.OrderNumber;
                        
                        
                        if (item.Code == "LI")
                        {
                            someClass.licode = item.Code;
                            someClass.licodeValue = item.NetCharge;
                        }
                        if (item.Code == "DT")
                        {
                            someClass.DTCode = item.Code;
                            someClass.DTCodeValue = item.NetCharge
                        }
                        if (item.Code == "FU")
                        {
                            someClass.FUCode = item.Code;
                            someClass.FUCodeValue = item.NetCharge;
                        }
                        someClass.Total = (someClass.licodeValue + someClass.FUCodeValue);
                        
                        //check for other values to calculate
                      
                        
                        //insert record to DB
                    }
                    else
                    {
                        //Insert into db after maipulation of values
                    }
                }
            }

            isRecordBad = false;
        }//END Using

任何线索将不胜感激。预先谢谢你。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?