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.JdbcOdbc...