如何解决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 举报,一经查实,本站将立刻删除。